按钮将禁用,直到所有输入未被填充无法正常工作
button will disable until all the input is not filluped is not working properly
以上是我填写的表单输入。我创建一个脚本,如果输入填充是 fillup,那么按钮将启用,直到按钮被禁用。
但在卡号输入框中不受其他输入的影响。没有卡号按钮显示已启用,但我希望如果所有填充都未填充,则必须将其禁用..
这是我的 jQuery 脚本:
jQuery(document).on('change keyup', '.required', function(e){
let Disabled = true;
jQuery(".required").each(function() {
let values = this.value;
if ((values)&&(values.trim() !=''))
{
Disabled = false;
}else{
Disabled = true;
return false;
}
});
if(Disabled){
jQuery('#submit_button').prop("disabled", true);
}else{
jQuery('#submit_button').prop("disabled", false);
}
});
这些卡号输入字段来自条纹支付api。
<div id="card-element" class="inputText gdcard">
<!-- a Stripe Element will be inserted here. -->
</div>
我无法在 .required
class 中使用条纹卡元素输入字段。请帮我解决这个错误?
你可以试试这个:
$("#card-element").prop(disabled, true);
jQuery(document).on('change keyup', '.required', function(e) {
//uncomment if this item has required class
//($("#card-element").removeClass(".required");
var isItOk = jQuery(".required").toArray().every((e) => $(e).val().trim() != '');
$("#card-element").prop(disabled, isItOk);
isItOk = isItOk && $("#card-element").val().trim() != '';
jQuery('#submit_button').prop("disabled", isItOk);
});
jQuery(".required").toArray().every((e) => $(e).val().trim() ! = ''); 表示所有具有 class .required
的项目都不为空
推荐的管理方法是 listen to events on Stripe Elements. In particular, you could listen to the change
event on a card element (doc) 并检查 event.complete
的值以查看表单是否已填写。如果是(您的其他字段也是),您可以启用支付按钮。
function checkIfCardComplete(elementsEvent) {
if (elementsEvent.complete) {
$("#pay-now").removeAttr("disabled")
} else {
$("#pay-now").attr("disabled", "disabled")
}
}
card.on('change', function(event) {
checkIfCardComplete(event);
});
您可以在此处查看此示例的实现(仅查看完整的卡片输入,忽略其他字段):https://jsfiddle.net/nolanhawkins/dhjybsnr/3/
编辑:
例如,如果您重构了代码以使对自定义字段的检查成为一个函数:
function areAllMyFieldsValid() {
let Disabled = true;
jQuery(".required").each(function() {
let values = this.value;
if ((values)&&(values.trim() !='')) {
Disabled = false;
} else {
Disabled = true;
return false;
}
});
return !Disabled; // really you should invert your logic, not the result
}
那么您可以更改事件处理程序中的检查,以便另外查看:
if (elementsEvent.complete && areAllMyFieldsValid()) { ...}
以上是我填写的表单输入。我创建一个脚本,如果输入填充是 fillup,那么按钮将启用,直到按钮被禁用。
但在卡号输入框中不受其他输入的影响。没有卡号按钮显示已启用,但我希望如果所有填充都未填充,则必须将其禁用..
这是我的 jQuery 脚本:
jQuery(document).on('change keyup', '.required', function(e){
let Disabled = true;
jQuery(".required").each(function() {
let values = this.value;
if ((values)&&(values.trim() !=''))
{
Disabled = false;
}else{
Disabled = true;
return false;
}
});
if(Disabled){
jQuery('#submit_button').prop("disabled", true);
}else{
jQuery('#submit_button').prop("disabled", false);
}
});
这些卡号输入字段来自条纹支付api。
<div id="card-element" class="inputText gdcard">
<!-- a Stripe Element will be inserted here. -->
</div>
我无法在 .required
class 中使用条纹卡元素输入字段。请帮我解决这个错误?
你可以试试这个:
$("#card-element").prop(disabled, true);
jQuery(document).on('change keyup', '.required', function(e) {
//uncomment if this item has required class
//($("#card-element").removeClass(".required");
var isItOk = jQuery(".required").toArray().every((e) => $(e).val().trim() != '');
$("#card-element").prop(disabled, isItOk);
isItOk = isItOk && $("#card-element").val().trim() != '';
jQuery('#submit_button').prop("disabled", isItOk);
});
jQuery(".required").toArray().every((e) => $(e).val().trim() ! = ''); 表示所有具有 class .required
的项目都不为空
推荐的管理方法是 listen to events on Stripe Elements. In particular, you could listen to the change
event on a card element (doc) 并检查 event.complete
的值以查看表单是否已填写。如果是(您的其他字段也是),您可以启用支付按钮。
function checkIfCardComplete(elementsEvent) {
if (elementsEvent.complete) {
$("#pay-now").removeAttr("disabled")
} else {
$("#pay-now").attr("disabled", "disabled")
}
}
card.on('change', function(event) {
checkIfCardComplete(event);
});
您可以在此处查看此示例的实现(仅查看完整的卡片输入,忽略其他字段):https://jsfiddle.net/nolanhawkins/dhjybsnr/3/
编辑: 例如,如果您重构了代码以使对自定义字段的检查成为一个函数:
function areAllMyFieldsValid() {
let Disabled = true;
jQuery(".required").each(function() {
let values = this.value;
if ((values)&&(values.trim() !='')) {
Disabled = false;
} else {
Disabled = true;
return false;
}
});
return !Disabled; // really you should invert your logic, not the result
}
那么您可以更改事件处理程序中的检查,以便另外查看:
if (elementsEvent.complete && areAllMyFieldsValid()) { ...}