我的問題是我正在檢查資料庫中的輸入欄位值,如果找到,則不應提交表單。但在我的情況下,如果有 3 個輸入欄位,一個說已經存在,另一個是正常值。表單被提交。如何根據在任何輸入欄位上未發現錯誤來防止表單提交。

public function check_module($postdata)
{
$module_name = $postdata['module_name'];
$data['select'] = ['*'];
$data['table'] = MODULE;
$data['where'] = ['module_name' => $module_name, 'status !=' => '9'];
$res = $this->selectRecords($data);
if ($res != null) {
$response = 0;
} else {
$response = 1;
}
echo $response;
exit;
}
$(document).on('change', '.module_name', function () {
var that = $(this);
var module_name = $(this).val();
var error = 0;
var base_url = $('#base_url').val();
$.ajax({
url: base_url 'module/check_module',
type: 'post',
data: {
module_name: module_name
},
success: function (res) {
if (res == 0) {
that.next('span').html('Module already exist');
$('#submit').attr('disabled', 'disabled');
} else {
$('.text-danger').each(function () {
var value = $(this).html();
if (value != "") {
error ;
}
});
if (error == 1) {
$('#submit').removeAttr("disabled");
}
that.next('span').html('');
}
}
});
});
uj5u.com熱心網友回復:
您可以使用global每個 ajax 呼叫都會修改的變數。如果 ajax 回應為零,則在全域errors變數中添加 1,如果一切正常,則為 0。
要計算陣列是否包含 1 和 0 的混合,有多種方法可以做到這一點,但Set看起來非常簡潔,可以與array.reduce計算陣列中所有元素的總和的呼叫結合使用。如果總和為零,則可以提交表單。
let errors=[];
let col=document.querySelectorAll('input[name="module_name"]');
$( document ).on('change', '.module_name', function(){
var that = $(this);
var module_name = $(this).val();
var base_url = $('#base_url').val();
$.ajax({
url: base_url 'module/check_module',
type: 'post',
data: {
module_name: module_name
},
success: function( res ) {
if( res==0 ) {
that.next('span').html('Module already exist');
$('#submit').attr('disabled', 'disabled' );
}
errors.push( res==0 ); // add either 1 or 0 depending upon result
if(
// 3 elements?
errors.length == col.length
&&
// all the same number?
new Set( errors ).size==1
&&
// sum equals zero
errors.reduce( (a,b)=>a b )==0
)$('#submit').removeAttr("disabled");
}
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/410725.html
標籤:
