2013-04-03 18 views
0

我有一個無線電輸入,並在頁面上的其他位置的按鈕上,我檢查是否檢查,並將選中的值更改爲打開或關閉。爲什麼這不簡單,如果:檢查輸入正常工作?

輸入的樣子:

<input type="radio" name="send" value="1" checked="true" /> 

或者

<input type="radio" name="send" value="1" /> 

我有相當簡單的jQuery做檢查:

$input = $('input[name=send]'); 

if($input.is(":checked")) 
{ 
    $input.attr("checked", false); 
} 
else 
{ 
    $input.attr("checked", true); 
} 

的問題是,如果在頁面加載和輸入被檢查,出於某種原因,我需要點擊按鈕兩次,才能識別狀態的其他部分NT。

如果頁面從輸入未選中開始,那麼在第一次單擊該按鈕時,按預期工作。然後每次點擊都可以工作。但是,如果輸入被檢查,則不是初始加載。

標記輸入爲正確的方式是什麼?

如何在輸入[type = radio]上完成正確的if/else語句來查看它是否被檢查?

+1

'$ input.prop('checked',!$ input [0] .checked);'? 或更好'$ input [0] .checked =!$ input [0] .checked'。 – Jashwant

回答

3

使用prop()訪問的checkbox代替ATTR checked財產,它發生在我身上的jQuery 1.9,它的工作原理的jQuery 1.8.3,但它能夠更好地使用道具()

if($input.is(":checked")) 
{ 
    $input.prop("checked", false); 
} 
else 
{ 
    $input.prop("checked", true); 
} 

正如@阿爾瓦羅·g^。維卡里奧說你可以使用if($input.prop("checked"))

+1

甚至更​​好:'if($ input.prop(「checked」))'。 'prop()'方法是一個很好的補充。 –

2

使用.prop()代替:

$input.prop("checked", false/true); 

因此,在你的代碼:

if($input.is(":checked")){ 
    $input.prop("checked", false); 
}else{ 
    $input.prop("checked", true); 
} 
2

checked是一個複選框的屬性,所以使用.prop()代替.attr()

checked屬性的存在會檢查該複選框,而不管其值如何。

2

這很可能是你想要的。

$input.prop('checked', function(i, oldVal){ 
    return !oldVal; 
}); 

你正在處理兩個單選按鈕......所以這將工作。

+0

但是在你的代碼中'oldVal'是索引而不是檢查狀態。 – undefined

+0

@undefined Opps,忘了我,謝謝。 – Ohgodwhy

相關問題