2013-06-19 152 views
15

我有下面的代碼來觸發某些單選按鈕上的單擊事件!但它不會被解僱!誰能幫我這個!單選按鈕上的jQuery單擊事件不會被觸發

CODE:

$("#inline_content input[name='type']").click(function(){ 
    if($('input:radio[name=type]:checked').val() == "walk_in"){ 
     $('#select-table > .roomNumber').attr('enabled',false); 
    } 
}); 

單選按鈕

<form class="type"> 
<input type="radio" name="type" checked="checked" value="guest">In House</input> 
<input type="radio" name="type" value="walk_in">Walk In</input> 
</form>. 

更新

嘗試onChange()太多,但不工作。

+1

'OnChange'不是一個東西,它是'change'。另外,爲什麼不使用'focus'? –

+0

事件處理程序被我解僱了:http://jsfiddle.net/6UZKN/,即使有'if'語句:http://jsfiddle.net/6UZKN/1/。 –

+2

使用'removeAttr('enabled')'確定。並非所有的瀏覽器都支持'enabled =「false」'。 – Broxzier

回答

30

它閃光。檢查演示http://jsfiddle.net/yeyene/kbAk3/

$("#inline_content input[name='type']").click(function(){ 
    alert('You clicked radio!'); 
    if($('input:radio[name=type]:checked').val() == "walk_in"){ 
     alert($('input:radio[name=type]:checked').val()); 
     //$('#select-table > .roomNumber').attr('enabled',false); 
    } 
}); 
+0

正確的'',你的代碼'html'在jsfiddle.net? – WMomesso

0

一種不同的方式

$("#inline_content input[name='type']").change(function() { 
    if ($(this).val() == "walk_in" && $(this).is(":checked")) { 
     $('#select-table > .roomNumber').attr('enabled', false); 
    } 
}); 

演示 - http://jsfiddle.net/cB6xV/

+0

您可以將事件處理程序的主體簡化爲'$('#select-table> .roomNumber')。prop('enabled',this.value!=='walk_in');'。最好使用'.prop'作爲布爾屬性。 –

+0

爲什麼我沒有想到 –

0

好像你是#inline_content是不存在的!刪除jQuery-Selector或檢查父元素,也許你有一個錯字或忘記添加ID。

(做你的jsfiddle,加上父母<div id="inline_content">後作品:http://jsfiddle.net/J5HdN/

0

把UR的js代碼的形式下的HTML或使用$(文件)。就緒(函數(){})和嘗試。

$('#inline_content input[type="radio"]').click(function(){ 
       if($(this).val() == "walk_in"){ 
        alert('ok'); 
       } 
}); 
11

有幾件事情錯在這個代碼:

  1. 您使用<input>走錯了路。如果您想使其背後的文字可點擊,您應該使用<label>
  2. 它設置enabled屬性,該屬性不存在。改爲使用disabled
  3. 如果它是一個屬性,它的值不應該是false,使用disabled="disabled"或簡單地disabled沒有值。
  4. 如果檢查某人點擊表單事件將會改變它的值(如複選框和單選按鈕),請改用.change()

我不確定你的代碼應該做什麼。我的猜測是,一旦有人選擇「進入」(並且可能在取消選擇時重新啓用),您想要禁用類roomNumber的輸入字段。如果是的話,試試這個代碼:

HTML:

<form class="type"> 
    <p> 
     <input type="radio" name="type" checked="checked" id="guest" value="guest" /> 
     <label for="guest">In House</label> 
    </p> 
    <p> 
     <input type="radio" name="type" id="walk_in" value="walk_in" /> 
     <label for="walk_in">Walk in</label> 
    </p> 
    <p> 
     <input type="text" name="roomnumber" class="roomNumber" value="12345" /> 
    </p> 
</form> 

的Javascript:

$("form input:radio").change(function() { 
    if ($(this).val() == "walk_in") { 
     // Disable your roomnumber element here 
     $('.roomNumber').attr('disabled', 'disabled'); 
    } else { 
     // Re-enable here I guess 
     $('.roomNumber').removeAttr('disabled'); 
    } 
}); 

我在這裏創造一個小提琴:http://jsfiddle.net/k28xd/1/

0

個人,對我來說,一個最好的解決方案類似的問題是:

HTML

<input type="radio" name="selectAll" value="true" /> 
<input type="radio" name="selectAll" value="false" /> 

JQuery的

var $selectAll = $("input:radio[name=selectAll]"); 
    $selectAll.on("change", function() { 
     console.log("selectAll: " + $(this).val()); 
     // or 
     alert("selectAll: " + $(this).val()); 
    }); 

*事件 「點擊」 來代替 「變」 的正常工作。

希望這會有所幫助!

相關問題