Javascript检查是否在表单提交中输入了任何文本,但无法正常工作

时间:2019-04-22 03:12:31

标签: javascript

我知道这是一个非常基本的JS问题,对不起。我对此很陌生。我一定在某个地方犯错了。这是我正在使用的东西:

HTML表单

<div class='nameinput'>Please enter your name:</div>
<input id='name1' placeholder='Name...' type='text'>
<input type='submit' value='Connect' class="submitForm">
</div>

JavaScript代码

  function store() {
    name = $("input#name1").val();
  }

  function init() {
    $('.submitForm').on('click', function(){

  if (name === '') {
  alert("Please Enter Name");
  } 

  else  
      store();
      $(".login_page").animate({
        'opacity': '0' });

我不确定这里缺少什么。 name = $("input#name1").val();工作正常,但似乎无法正常工作。有人可以在这里解释我的问题吗?

2 个答案:

答案 0 :(得分:2)

变量name在范围内是undefined。单击该按钮时需要获取它。将您的代码更改为以下内容:

function init() {
  $('.submitForm').on('click', function() {
    var name = $("#name1").val();

    if (name === '') {
      alert("Please Enter Name");
    }

    // rest of the code
}

此外,如果仅使用函数store来初始化变量name,则不需要该函数。此外,选择器input#name1可以简化为#name1,因为页面中的所有元素都应具有唯一的ID。

答案 1 :(得分:1)

我还是新手,并且可以通过多种方式学习JavaScript,所以请不要担心。

首先,您应该始终尝试尽可能地调试问题。一种简单的方法是简单地放入测试console.log()语句以打印出相关的值,这样您就可以1)知道正在触发的内容和触发时间,以及2)它们正在使用的值。这样可以使您摆脱许多此类问题。

第二,我相信您的if语句(if (name === '') {)是问题所在。您应该看看这个,问自己为什么不起作用?您的逻辑比较写错了吗?您在比较正确的事情吗?您正在比较哪些值?

您的问题是:name在哪里定义?您在store()中使用了它,但是它在该init语句中的if中第一次弹出。在此之前没有定义。

所以第一次触发时,那是不对的,它转到else子句,然后然后 store()触发。

在这种情况下,您已经失去了范围的了解;定义变量的位置。

最简单的解决方案是添加另一个语句以提取您要检查的输入的值,并确保它不是null / empty。因此,除非您有特定的用途,否则我根本不需要您store()