我正在使用带有ajax update方法的jquery脚本,该方法绑定到表单元素的focus事件。它工作,但我首先想检查表单元素是否为空。一旦我这样做,该功能就会停止工作。以下是代码:
<script type="text/javascript">
if ($('#txt_updateone').val().trim().length > 0) {
function single_change(txt_updateone) {
$.ajax({
type: "POST",
data: { "txt_updateone": 1 },
url: "single_scorechange.php",
success: function (data) {
$('#listinscore').load(document.URL + '#listinscore');
},
error: function (xhr) {
alert("error");
}
});
return false;
}
}
</script>
txt_updateone是textarea,onfocus事件调用single_change函数。当我在第二行删除if .....时,它可以工作,但我希望它只在textarea不为空时才能工作。
答案 0 :(得分:2)
有两种方法。
1)在您调用此函数的位置验证数据。
2)在使用beforeSend
发送ajax请求之前验证数据。
<script type="text/javascript">
function single_change(txt_updateone) {
$.ajax({
type: "POST",
data: { "txt_updateone": 1 },
url: "single_scorechange.php",
success: function (data) {
$('#listinscore').load(document.URL + '#listinscore');
},
beforeSend: function(xhr) {
alert("Enter some value");
return $('#txt_updateone').val().trim().length > 0 ? true: false;
}
error: function (xhr) {
alert("error");
}
});
return false;
}
</script>
答案 1 :(得分:1)
正如您在函数之前提到的if
条件,该函数实际上是在那里声明的。所以你要调用未定义的函数。
function single_change(txt_updateone) {
if ($('#txt_updateone').val().trim().length < 1) {
//form element is empty
return false;
}
$.ajax({
type: "POST",
data: { "txt_updateone": 1 },
url: "single_scorechange.php",
success: function (data) {
$('#listinscore').load(document.URL + '#listinscore');
},
error: function (xhr) {
alert("error");
}
});
return false;
}
答案 2 :(得分:1)
将您的代码更改为
function single_change(txt_updateone) {
if ($('#txt_updateone').val().trim().length > 0) {
$.ajax({
type: "POST",
data: {
"txt_updateone": 1
},
url: "single_scorechange.php",
success: function(data) {
$('#listinscore').load(document.URL + ' #
listinscore ');
},
error: function(xhr) {
alert("error");
}
});
return false;
}
}
您需要在方法内执行if
检查。
答案 3 :(得分:0)
只需交换函数和if语句
//Declare function in all cases
function single_change(txt_updateone) {
//When you call function, check if statement.
if ($('#txt_updateone').val().trim().length > 0) {
$.ajax({
type: "POST",
data: { "txt_updateone": 1 },
url: "single_scorechange.php",
success: function (data) {
$('#listinscore').load(document.URL + '#listinscore');
},
error: function (xhr) {
alert("error");
}
});
return false;
}
}
答案 4 :(得分:0)
如果文本区域非空(并且很可能在此代码运行时,它可能为空),您正在做的是定义您的函数。我认为你的意思是始终定义函数,但只有在文本区域有内容时才执行正文。
如果这是你想要的,这可能会有效:
<script type = "text/javascript">
function single_change ( txt_updateone ) {
var content = $('#txt_updateone').val().trim();
if (!content.length) { return; }
// now execute function with non-empty content.
}
</script>