2017-01-12 46 views
-1

私はphpで(laravelの)ビューに送信し、foreachを使ってテーブル内のすべてのユーザーをリストするユーザーの配列を持っています。今のところそれは大丈夫です。無効に表示される「送信」ボタンがありますが、チェックボックスをクリックすると表示されます。チェックボックスJavaScriptの無効化ボタン

enter image description here

私はこのJavaScriptコード置く:

<script type="text/javascript"> 
Enable = function(val) 
{ 
    var sbmt = document.getElementById("send"); //id of button 

    if (val.checked == true) 
    { 
     sbmt.disabled = false; 
    } 
    else 
    { 
     sbmt.disabled = true; 
    } 
}  
</script> 

と、チェックボックスの機能のonClickメソッドを呼び出します。

onclick="Enable(this)" 

をしかし、問題は、私が唯一のチェックボックスをクリックしたときです最初のボタン送信が機能し、表示されます。例えば、2,3,4のポジションのユーザーのチェックボックスなどをクリックすると、これらのユーザーのボタン送信が無効になり、最初のみが表示されます。このコードは、送信ボタンの最初の位置にしか作用しません。

私はあなたの助けに感謝:)

よろしく

+0

私の更新された回答を確認してください –

答えて

0
  1. あなたはEnable機能が、値としてそれを治療するための要素を渡します。他のアクションの前に要素から値を抽出する必要があります。
  2. 関数のボタンIDをハードコードしました。それは外に伝えられ、各ボタンごとに異なるはずです。

Enable = function(checkbox, btnId) 
 
    { 
 
     document.getElementById(btnId).disabled = !checkbox.checked; // ← ! 
 
    }
<button id="send1" disabled>SEND</button> 
 
<input type="checkbox" onclick="Enable(this, 'send1')"><br> 
 
<button id="send2" disabled>SEND</button> 
 
<input type="checkbox" onclick="Enable(this, 'send2')"><br> 
 
<button id="send3" disabled>SEND</button> 
 
<input type="checkbox" onclick="Enable(this, 'send3')">

+0

返信いただきありがとうございます。 – RMaster21

+0

あなたの例が私のために働いていない – RMaster21

+0

あなたの質問を再読して修正しました –

0

の理由は、あなたがボタンをアクティブにするためにid要素を使用していることです。 できることは、各送信ボタンのIDを、あなたの関数をクリックしてループして渡している間にそれをセットし、それを有効にするために使うことです。

<script type="text/javascript"> 
Enable = function(val, id) 
{ 
    var sbmt = document.getElementById("send-"+ id); //id of button 

    if (val.checked == true) 
    { 
     sbmt.disabled = false; 
    } 
    else 
    { 
     sbmt.disabled = true; 
    } 
}  
</script> 

とあなたのクリックボタンこの

onclick="Enable(this,id)" 

はあなたが理解ホープのように見えます。

+0

'val'変数が未定義になりました。 –

+0

更新された回答を確認してください。 –

関連する問題