我有这个表格
<form action="ajax/add-category" method="post" class="default-form" id="preventForm">
<h2 class="form-title">Nuova categoria</h2>
<div class="cf form-type cols-full">
<div class="form-object">
<label for="name"></label>
<input type="text" class="req" name="name" id="name" placeholder="Nome categoria">
</div>
</div>
<button type="button" class="form-btn btn-medium btn-green check-inputs" id="submitCategory">Aggiungi categoria</button>
<button type="button" class="cancel-overlay">Annulla</button>
</form>
我有两个不同的功能。
如果button
有一个类check-inputs
并且它返回一个响应(true
/ false
),则执行第一个函数req
已全部填满。
第二个函数执行AJAX以在数据库中插入数据。
我希望第二个函数只在第一个函数返回true
时执行,所以如果所有必需的输入都被填充。
这是AJAX功能
/* submit the form via ajax */
$(document).on('click', '#submitCategory', function(){
var $self = $(this),
$form = $self.closest('form'),
url = $form.prop('action'),
method = $form.prop('method'),
data = $form.serialize();
$.ajax({
url: url,
type: method,
data: data,
success: function(rsp) {
console.log(rsp);
}
});
});
这可能还是我必须合并这两个功能?
我想将它们分开,所以我可以使用第一个检查其他AJAX请求输入的函数。
谢谢。
修改
我应该提到这两个函数分别位于两个文件中,响应不是全局的。
答案 0 :(得分:1)
使用全局window
范围的快捷方式:
JS1:
window.yourCheckFunction = function() {
...
// return true or false
}
JS2:
/* submit the form via ajax */
$(document).on('click', '#submitCategory', function(){
var $self = $(this),
$form = $self.closest('form'),
url = $form.prop('action'),
method = $form.prop('method'),
data = $form.serialize();
if (yourCheckFunction()) {
$.ajax({
url: url,
type: method,
data: data,
success: function(rsp) {
console.log(rsp);
}
});
}
});
但最好使用模块组织代码。您将拥有一些JS
个文件来创建/扩展一个模块,模块的范围可以从任何模块的功能访问。奖励 - 您可以使用RequireJS
等技术按需加载JS
个文件。