2014-03-27 47 views
0

我正面臨一個奇怪的編程問題。JavaScript無法提交asp.net頁面禁用某些文本框

我有一個頁面供用戶註冊。 當用戶從選項中選擇「否」時,我正在使用JavaScript代碼來禁用文本框。

但是從下拉列表中選擇選項'否'後,頁面沒有被提交,也沒有重定向到下一頁。如果我選擇每個'是'&填充文本框,然後它順利提交併重定向到下一頁。

我懷疑這是JavaScript問題。請幫助!


這裏是我的javasctipt代碼示例

功能DisableEnable2(){

 var ddlCnovict = document.getElementById("<%= ddlConviction.ClientID %>") 
     var txtConDate = document.getElementById("<%= txtConvictDate.ClientID %>") 
     var txtConDetail = document.getElementById("<%= txtConvictionDetails.ClientID %>") 


     if (ddlCnovict.options[ddlCnovict.selectedIndex].text == "No") { 

      txtConDate.disabled = true; 
      txtConDetail.disabled = true; 
     } 

     else { 
      txtConDate.disabled = false; 
      txtConDetail.disabled = false; 
     } 


    } 

asp代碼:

是 沒有

+0

請顯示您的代碼。 – DatRid

+0

感謝您回覆DatRid。我編輯了我的代碼。 – Aki

+0

你的頁面上有沒有asp驗證器? – kobe

回答

2

禁用驗證,當你不需要textboxed被要求:

function DisableEnable2() { 

    var ddlCnovict = document.getElementById("<%= ddlConviction.ClientID %>") 
    var txtConDate = document.getElementById("<%= txtConvictDate.ClientID %>") 
    var txtConDetail = document.getElementById("<%= txtConvictionDetails.ClientID %>") 

    var txtConDateValidatior = document.getElementById("<%= txtConvictDateValidatior.ClientID %>") 
    var txtConDetailValidatior = document.getElementById("<%= txtConvictionDetailsValidatior.ClientID %>") 

    if (ddlCnovict.options[ddlCnovict.selectedIndex].text == "No") { 
     ValidatorEnable(txtConDateValidatior, false); 
     ValidatorEnable(txtConDetailValidatior, false); 
     txtConDate.disabled = true; 
     txtConDetail.disabled = true; 
    } 

    else { 
     ValidatorEnable(txtConDateValidatior, true); 
     ValidatorEnable(txtConDetailValidatior, true); 
     txtConDate.disabled = false; 
     txtConDetail.disabled = false; 
    } 


} 

我知道有驗證了作者的評論迴應:

@kobe,是的。我有驗證器。 - user2285026 10分鐘前

+0

謝謝科比!你做了我的一天:) 我從來沒有預料到asp驗證器混亂提交沒有任何警告/錯誤。 這是很好的解決方案.. – Aki

+0

記住的邏輯:驗證者也客戶端,並沒有一點去服務器,如果條件不符合 – kobe

0

在HTML

<%= ddlConviction.ClientID %> 

它是如此,我從來沒有見過這樣的結構看起來就像在服務器端和客戶端應該轉化成不同的東西上scriplets。

我認爲你必須在頁面上JS錯誤,因爲JS找不到

<%= ddlConviction.ClientID %> 

和你

txtConDetail 

例如爲NULL,因此施工

txtConDetail.disabled 

將導致錯誤。

嘗試在FireFox的Chrome或FireBug中使用DevTools,也可以在瀏覽器中查看頁面源代碼。

+0

感謝您的回覆。我的腳本工作得很好。 問題是與asp驗證器。 @ kobe是對的。 – Aki

0

而不是禁用控制使用屬性函數添加禁用屬性:

txtConDate.Attributes.Add( 「禁用」, 「真」);

和關於選擇 「YES」 爲此,

txtConDate.Attributes.Clear( 「無效」);