如果 jQuery 中的给定字段未填写,则禁用提交按钮
Disabling a submit button if a given field is unfilled in jQuery
我目前正在使用 jQuery 禁用编辑个人资料部分的提交按钮,除非使用以下 jQuery.
填写密码字段
$('.submitBtn').prop('disabled', true);
$('.requiredInput').keyup(function() {
checkRequiredFields();
});
function checkRequiredFields() {
var count = 0;
$('.requiredInput').each(function(i){
if( $(this).val() === '') count++;
if(count == 0){
$('.submitBtn').prop('disabled', false);
}else {
$('.submitBtn').prop('disabled', true);
}
});
}
我也有模式对话框弹出来显示更改密码部分,我想禁用此上的提交按钮,直到以类似方式将数据输入到表单中。
如果我想在一个字段为空时禁用一个按钮,而在另一个字段为空时禁用另一个按钮,我该如何实现?
HTML 根据要求:
<div class='form-group'>
<div class='row'>
<div class='col-sm-6'>
<label for="user_current_password">Current password</label>
<input class="form-control requiredInput_1" id="user_current_password" name="user[current_password]" type="password" />
</div>
</div>
</div>
<div class='row'>
<div class='col-sm-6'>
<input class="btn btn-success submitBtn_1" name="commit" type="submit" value="Save" />
<a class="btn btn-default" href="/">Cancel</a>
<div class='btn btn-warning' data-target='#edit-password' data-toggle='modal' style='float:right;'>Change password</div>
</div>
</div>
</div>
模态对话框中的第二种形式是相同的。
更好的函数是
$('.requiredInput_1').keyup(function() {
checkFun(this, ".submitBtn_1");
});
$('.requiredInput_2').keyup(function() {
checkFun(this, ".submitBtn_2");
});
function checkFun(a, b)
{
var subBut = $(b);
$(a).val()==""?subBut.prop('disabled', true):subBut.prop('disabled', false);
}
看看这个:
$("input").on('keyup', function(){
$(this).next().prop('disabled', $(this).val()=="");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
编辑
如果输入和按钮完全分开(在不同的 div 中等),您必须设置一些小技巧来在它们之间建立连接:
$('input').on('keyup', function(e){
var target = e.currentTarget.attributes['data-btn'].value; // will give you "btn1" or "btn2"
$("#"+target).prop('disabled', $(this).val()=='');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<div>
<div>
<input data-btn="btn1"/>
</div>
<br>
<div>
<input data-btn="btn2"/>
</div>
</div>
<p>
<input data-btn="btn3"/>
</p>
<div>
<button id="btn1" disabled>BUTTON 1</button>
<button id="btn2" disabled>BUTTON 2</button>
<div>
<button id="btn3" disabled>BUTTON 3</button>
</div>
</div>
</div>
我目前正在使用 jQuery 禁用编辑个人资料部分的提交按钮,除非使用以下 jQuery.
填写密码字段$('.submitBtn').prop('disabled', true);
$('.requiredInput').keyup(function() {
checkRequiredFields();
});
function checkRequiredFields() {
var count = 0;
$('.requiredInput').each(function(i){
if( $(this).val() === '') count++;
if(count == 0){
$('.submitBtn').prop('disabled', false);
}else {
$('.submitBtn').prop('disabled', true);
}
});
}
我也有模式对话框弹出来显示更改密码部分,我想禁用此上的提交按钮,直到以类似方式将数据输入到表单中。
如果我想在一个字段为空时禁用一个按钮,而在另一个字段为空时禁用另一个按钮,我该如何实现?
HTML 根据要求:
<div class='form-group'>
<div class='row'>
<div class='col-sm-6'>
<label for="user_current_password">Current password</label>
<input class="form-control requiredInput_1" id="user_current_password" name="user[current_password]" type="password" />
</div>
</div>
</div>
<div class='row'>
<div class='col-sm-6'>
<input class="btn btn-success submitBtn_1" name="commit" type="submit" value="Save" />
<a class="btn btn-default" href="/">Cancel</a>
<div class='btn btn-warning' data-target='#edit-password' data-toggle='modal' style='float:right;'>Change password</div>
</div>
</div>
</div>
模态对话框中的第二种形式是相同的。
更好的函数是
$('.requiredInput_1').keyup(function() {
checkFun(this, ".submitBtn_1");
});
$('.requiredInput_2').keyup(function() {
checkFun(this, ".submitBtn_2");
});
function checkFun(a, b)
{
var subBut = $(b);
$(a).val()==""?subBut.prop('disabled', true):subBut.prop('disabled', false);
}
看看这个:
$("input").on('keyup', function(){
$(this).next().prop('disabled', $(this).val()=="");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
<input /> <button disabled>ok</button><br>
编辑
如果输入和按钮完全分开(在不同的 div 中等),您必须设置一些小技巧来在它们之间建立连接:
$('input').on('keyup', function(e){
var target = e.currentTarget.attributes['data-btn'].value; // will give you "btn1" or "btn2"
$("#"+target).prop('disabled', $(this).val()=='');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<div>
<div>
<input data-btn="btn1"/>
</div>
<br>
<div>
<input data-btn="btn2"/>
</div>
</div>
<p>
<input data-btn="btn3"/>
</p>
<div>
<button id="btn1" disabled>BUTTON 1</button>
<button id="btn2" disabled>BUTTON 2</button>
<div>
<button id="btn3" disabled>BUTTON 3</button>
</div>
</div>
</div>