jquery 不能使用 if 语句
Posted
技术标签:
【中文标题】jquery 不能使用 if 语句【英文标题】:jquery not working with if statement 【发布时间】:2018-01-27 01:50:25 【问题描述】:我正在使用带有 ajax 更新方法的 jquery 脚本,该方法绑定到表单元素的焦点事件。它有效,但我首先要检查表单元素是否为空。一旦我这样做,该功能就会停止工作。下面是代码:
<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 是一个文本区域,onfocus 事件调用 single_change 函数。当我在第二行删除 if..... 时,它可以工作,但我希望它只有在 textarea 不为空时才能工作。
【问题讨论】:
在函数内移动if
语句?
你的脚本是否在你的元素 #txt_updateone 之后?
【参考方案1】:
有两种方法。
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 感谢一百万 Nagarjiun!它完美地工作!再次感谢您!【参考方案2】:把你的代码改成
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】:正如你在函数之前提到的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;
【讨论】:
只有一个退出函数总是最好的,现在你有两个,但也可以。 它被称为early return
而不是将整个 ajax 调用包装到 if 循环中。这提高了可读性。
@tilz0R 是编码风格,你不需要为此投反对票。比较你和我的答案,看看哪一个更易读?
@Thamaraiselvam 你正在做反对 OP 需要什么。他需要,如果长度大于 0,那么只有 ajax 会运行。你正在做相反的事情
感谢@AlivetoDie 指出问题。我没看到。【参考方案4】:
只需交换函数和 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;
【讨论】:
【参考方案5】:你正在做的是定义你的函数只有当文本区域是非空的(很可能当这段代码运行时,它可能是空的)。我认为您的意思是始终定义函数,但仅在文本区域有内容时才执行正文。
如果这是你想要的,这可能会奏效:
<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>
【讨论】:
以上是关于jquery 不能使用 if 语句的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在使用 Javascript 的 if 语句中重新分配这个变量? [复制]
为啥我不能使用正则表达式来评估 if...else 语句 [重复]