民间,

我的html中有两个文本框。我想使用咖啡脚本比较它们的值。尽管我已经在Google上进行了搜索,并且可以肯定我正在做预期的操作,但是仍然看到奇怪的行为。

事情是:

可以说,我有两个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")

情况是,如果我仅在“标题”文本框中输入内容,它将提醒我“作者为空”。对?但是令人惊讶的是,它使我警觉到“两者都可以”。还是我错过了什么?

最佳答案

在jQuery中,.val()不会为空字段返回null(选择元素除外)。现在,您的咖啡脚本评估为:

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");
}

因此,请尝试删除问号
if not elem_book_title
  alert("title is null")
else if not elem_book_author
  alert("author is null")
else
  alert("both are ok")

这将生成我认为您期望的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");
}

关于coffeescript的存在运算符(?)工作here的方式存在一个问题,您可能会找到有用的信息(感谢@ raina77ow)。

08-19 05:08