2017-01-02 103 views
0

試圖如果選擇了單選按鈕中的一個來禁用一個文本框:jQuery和Visual Studio 2010的

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 
    $(function() { 
     $("#radPerpetrator").change(function() { 
      var st = this.checked; 
      if (st) { 
       $("#txtPerpetratorOther").prop("disabled", true); 
      } 
     }); 
    }); 
</script> 

.NET代碼

<asp:RadioButtonList ID="radPerpetrator" runat="server" RepeatDirection="Horizontal"> 
<asp:ListItem>Parent</asp:ListItem> 
<asp:ListItem>Guardian</asp:ListItem> 
<asp:ListItem>Sibling</asp:ListItem> 
<asp:ListItem>Relative</asp:ListItem> 
<asp:ListItem>Teacher</asp:ListItem> 
</asp:RadioButtonList> 

Other: <asp:TextBox ID="txtPerpetratorOther" runat="server" Width="150"></asp:TextBox> 
+0

單選按鈕的值是多少? –

+1

當你檢查你的HTML在瀏覽器中,你看到你的原始ID在這些元素,或ASP已改變他們? –

+1

使用html輸入代替asp控件。 –

回答

0

可能有更好的方法來從腳本中識別asp服務器控件,但是我的解決方法是爲每個控件分配一個唯一的類名。然後使用腳本中的類。注意由於您指定的jQuery較舊,我必須從'prop'更改爲'attr'。

<asp:RadioButtonList ID="radPerpetrator" CssClass="radiolist" runat="server" RepeatDirection="Horizontal"> 
<asp:ListItem>Parent</asp:ListItem> 
<asp:ListItem>Guardian</asp:ListItem> 
<asp:ListItem>Sibling</asp:ListItem> 
<asp:ListItem>Relative</asp:ListItem> 
<asp:ListItem>Teacher</asp:ListItem> 
</asp:RadioButtonList> 

Other: <asp:TextBox ID="txtPerpetratorOther" CssClass="textboxOther" runat="server" Width="150"></asp:TextBox> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 
    $(function() { 
     $(".radiolist input").change(function() { 
      alert(this.defaultValue + ' changed: checked=' + this.checked); 
      if (this.checked) { 
       //note: one of the list items is always checked after initial one is clicked 
       $('.textboxOther').attr('disabled', true); 
      } 
     }); 
    }); 
</script> 
0

使用html輸入,而不是ASP控制。它運作良好。

<input type='radio' class='radio' name='type' value='1' /> 
<input type='radio' class='radio' name='type' value='2' /> 
<input type='radio' class='radio' name='type' value='3' /> 
<input type="text" id="txtPerpetratorOther" /> 

$(function() { 
    $(".radio").change(function() { 
     var st = this.checked; 
     if (st) { 
      $("#txtPerpetratorOther").prop("disabled", true); 
     } 
    }); 
}); 

編輯:
你把

RUNAT = 「服務器」

在單選按鈕列表的頁面重新加載的原因。所以JavaScript無法捕捉到事件。

+0

謝謝。所以沒有辦法使用jQuery與ASP.Net控件? – user1422570

+0

在此發佈html代碼。那麼我會告訴你。 –

+0

@ user1422570您將runat =「server」放入單選按鈕列表中,這就是頁面重新加載的原因。所以JavaScript無法捕捉到事件。 –