Rah*_*ava 2 javascript jquery coffeescript
伙计们,
我的html中有两个文本框.我想用咖啡脚本比较他们的价值观.虽然我已经开始搜索它,但我确信我正在做预期的事情,但我仍然看到一种奇怪的行为.
事情是:
可以说,我有两个文本框,其id为"title"和"author".除此之外,我还有一个onclick触发咖啡脚本功能的按钮.
我的咖啡脚本功能如下:
check_fields = ->
elem_book_title = $("#title").val()
elem_book_author = $("#author").val()
alert(elem_book_title)
alert(elem_book_author)
if not elem_book_title?
alert("title is null")
else if not elem_book_author?
alert("author is null")
else
alert("both are ok")
Run Code Online (Sandbox Code Playgroud)
情况是,如果我只在我的"标题"文本框中输入内容,它应该提醒我"作者为空".对?但令人惊讶的是,它提醒我"两者都可以".预计?或者我错过了什么?
在jQuery中,.val()
不会为空字段返回null(select元素除外).现在你的咖啡脚本评估为:
if (elem_book_title == null) {
return alert("title is null");
} else if (elem_book_author == null) {
return alert("author is null");
} else {
return alert("both are ok");
}
Run Code Online (Sandbox Code Playgroud)
所以尝试删除问号
if not elem_book_title
alert("title is null")
else if not elem_book_author
alert("author is null")
else
alert("both are ok")
Run Code Online (Sandbox Code Playgroud)
这将生成我认为你期待的js(它正在测试虚假,如空字符串,0或null
):
if (!elem_book_title) {
return alert("title is null");
} else if (!elem_book_author) {
return alert("author is null");
} else {
return alert("both are ok");
}
Run Code Online (Sandbox Code Playgroud)
有一个问题关于coffeescript的存在运算符(?
)在这里工作的方式,你可能会发现信息(感谢@ raina77ow).