2014-01-28 276 views
1

我試圖禁用提交按鈕,並勾選複選框時啓用它。簡單的例子適用於的jsfiddle禁用HTML表單提交按鈕,啓用勾選複選框

http://jsfiddle.net/8YBu5/522/

但在我的模板嘗試它的時候(與引導等)沒有。

我的模板有複選框

<input type="checkbox" id="checky"><a href="#">terms and conditions</a> 

然後按鈕

<input type="submit" value="Submit" id="submit" class="btn btn-success btn-lg btn-block">Submit</button> 

隨後的JavaScript。 JavaScript是否需要在頂部或什麼?

<script type="text/javascript"> 
    $('#submit').attr("disabled","disabled"); 

    $('#checky').click(function(){ 

     if($(this).attr('checked') == true){ 
      $('#submit').removeAttr('disabled'); 
     } 
     else { 
      $('#submit').attr("disabled","disabled"); 

     } 
    }); 
    </script> 

有人看到我要去哪裏錯了嗎?

感謝

UPDATE 感謝所有的建議,我現在已經嘗試添加了$(document).ready(function() {給我的腳本的開始,改變.attr.prop,仍然沒有工作。更多信息:從一開始就沒有禁用按鈕,所以也許我沒有在功能中正確引用按鈕?

UPDATE2 我嘗試添加一個警告,看看我的JavaScript運行的,但是警告不顯示,這到底意味着什麼?

<script type="text/javascript"> 
$(document).ready(function() { 
    alert("Welcome"); 
    $('submit').prop("disabled", true); 
    $('checky').click(function(){ 
     if($(this).attr('checked') == true){ 
      $('submit').prop("disabled", false); 
     } 
     else { 
      $('submit').prop("disabled", true); 
     } 
    }); 
}); 

UPDATE3的JavaScript現在正在運行,我已經添加了兩個警報,看看有什麼正在執行。

//<![CDATA[ 
$(window).load(function(){ 
$('#postme').attr("disabled","disabled"); 

$('#checky').click(function(){ 

    if($(this).attr('checked') == true){ 
     alert("w"); 
     $('#postme').removeAttr("disabled"); 
    } 
    else { 
     alert("e"); 
     $('#postme').attr("disabled","disabled"); 

    } 
}); 
});//]]> 

當我點擊複選框打開或關閉,我得到e警報,告訴我if語句總是爲false。任何想法爲什麼?

UPDATE4 的片段工作,只是沒有在我的網頁,警告2始終執行,從不提示1 標題

<link href="/static/css/bootstrap.min.css" rel="stylesheet"> 

</head> 

<body> 

    <div class="container"> 


     <div class="row padding"> 
      <div class="col-md-12"> 
       <h1></h1> 
      </div> 
     </div> 

     <div class="row padding"> 

      <form id="new_form" action="/page/" method="POST" > 

       <div class="panel panel-success"> 
       <div class="panel-heading"> 
        <h3 class="panel-title"></h3> 
       </div> 

       <div class="panel-body"> 
        <div class="col-md-12"> 

       </div> 
       </div> 
      </div> 

       <div class="panel panel-info"> 
       <div class="panel-heading"> 
        <h3 class="panel-title">Creator submission form</h3> 
       </div> 

       <div class="panel-body"> 
        <div class="col-md-12"> 

        </div> 
       </div> 
       </div> 
      <br> 

       <input type="checkbox" id="checky1"> 
       <input type="submit" id="postme1" value="submit"> 

         </form> 
     </div> 

     <div class="row padding"> 
      <div class="col-md-12"> 

      </div> 
     </div>    
    </div> 

    <script type='text/javascript' src='http://code.jquery.com/jquery-1.5.2.js'></script> 

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 
$('#postme1').attr("disabled","disabled"); 

$('#checky1').click(function(){ 

    if($(this).attr('checked') == true){ 
     $('#postme1').removeAttr('disabled'); 
    } 
    else { 
     $('#postme1').attr("disabled","disabled"); 
    } 
}); 
});//]]> 

</script> 

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
    <script src="https://code.jquery.com/jquery.js"></script> 
    <!-- Include all compiled plugins (below), or include individual files as needed --> 
    <script src="/static/js/bootstrap.min.js"></script> 

<div class="container"> 
    <footer> 
    <hr> 

    </footer> 
</div> 

    <script type='text/javascript' src='http://code.jquery.com/jquery-1.5.2.js'></script> 

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 
$('#postme1').attr("disabled","disabled"); 

$('#checky1').click(function(){ 

    if($(this).attr('checked') == true){ 
     alert("1"); 
     $('#postme1').removeAttr('disabled'); 
    } 
    else { 
     alert("2"); 
     $('#postme1').attr("disabled","disabled"); 

    } 
}); 
});//]]> 

</script> 

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
    <script src="https://code.jquery.com/jquery.js"></script> 
    <!-- Include all compiled plugins (below), or include individual files as needed --> 
    <script src="/static/js/bootstrap.min.js"></script> 

</body> 
</html> 
+1

'$(document).ready(function(){.... your jQuery ...});' - http://learn.jquery.com/about-jquery/how-jquery-works/#啓動代碼文件就緒 – gvee

+0

你應該使用'prop'而不是'attr'''.prop(「disabled」,true)' – tymeJV

回答

3

JavaScript代碼應該是

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title> - jsFiddle demo</title> 

    <script type='text/javascript' src='http://code.jquery.com/jquery-1.5.2.js'></script> 

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 
$('#postme').attr("disabled","disabled"); 

$('#checky').click(function(){ 

    if($(this).attr('checked') == true){ 
     $('#postme').removeAttr('disabled'); 
    } 
    else { 
     $('#postme').attr("disabled","disabled"); 

    } 
}); 
});//]]> 

</script> 


</head> 
<body> 
    <input type="checkbox" id="checky"><a href="#">terms and conditions</a> 
<input type="submit" id="postme" value="submit"> 

</body> 


</html> 

這段代碼工作正常爲了我。

更新

以此作爲點擊複選框

$('#checky').click(function(){ 

    if($(this).prop('checked')){ 
     $('#postme').removeAttr('disabled'); 
    } 
    else { 
     $('#postme').attr("disabled","disabled"); 

    } 
}); 
+0

試過這個,沒有改變 – holmeswatson

+0

之前我的腳本做的工作。謝謝 – holmeswatson

+0

抱歉虛驚一場,按鈕現在變灰,但是當複選框被選中時不啓用 – holmeswatson

0

的jsfiddle是一個可愛的資源。它所做的一件可愛的事情就是爲你提供JQuery的包裝器!

Have a little read of this

在文檔準備啓動代碼

要確保他們的代碼運行在瀏覽器完成加載文檔後,許多JavaScript程序員包裹他們的代碼中有載功能:

window.onload = function() { 
    alert("welcome");  
} 

不幸的是,代碼不會運行,直到所有圖像完成下載,包括橫幅廣告。儘快運行代碼的文件已準備好進行操作,jQuery有被稱爲ready事件的聲明:

$(document).ready(function() { 
    // Your code here.  
}); 
0

的事件處理程序請確保您包括您<script>後您的HTML的其餘部分。或者你也可以在其包裝:

$(document).ready(function() { 
    // your code here 
}); 

而且你應該使用.change代替.click,在情況下,用戶使用鍵盤選中複選框。

+0

使用鍵盤檢查/取消選中也會觸發'.click'。 –

+0

@ krishanu該死的,你是對的:) – Skwal

相關問題