【问题标题】:On Submit, variable that is supposed to change doesn't? Why?在提交时,应该更改的变量不会?为什么?
【发布时间】:2018-12-07 20:59:20
【问题描述】:

我想要做的是,当输入与变量名称相同时,用户无法按下按钮“change”,但当输入不同时,用户可以按下按钮 'change' 并且值名称会改变,但问题是变量没有改变......为什么?

代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>App</title>
</head>
<body>
<form id="sendNameForm">
    <input id="name" type="text" value="John"/>
    <button id="sendNameBtn" type="submit" disabled>Change</button>
</form>
<script src="jquery-1.12.4.js"></script>
<script>

    $('#sendNameForm').submit(function() {
        var name = $('#name').val();
        dis_enableNameSend();
        alert("Success!");
        return false;
    });

    var name= $('#name').val();

    function dis_enableNameSend(){
        var newName = $('#name').val();
        if(newName==name){
            document.getElementById("sendNameBtn").disabled = true;
        }else{
            document.getElementById("sendNameBtn").disabled = false;
        }
    }

    $('#name').on('input', function() {
        dis_enableNameSend();
    });

</script>
</body>
</html>

谢谢!

【问题讨论】:

  • 我已经试过你的代码,它工作正常。你认为变量name 没有变化吗?
  • name 是保留字,有副作用。重命名并重试。
  • 另外,从var name = $('#name').val(); 中删除var 以更新全局而不是创建本地
  • 例如,当我插入“Mark”并按“更改”时,变量应该从“John”更改为“Mark”,但这不起作用,因为如果是在我写有“Mark”时输入我将无法按“更改”
  • 谢谢!问题是我正在创建一个局部变量......我完全错过了......感谢您的帮助! :D 也许更改名称变量是一个好主意,因为它可能会在未来引起问题!谢谢!

标签: javascript jquery html variables


【解决方案1】:

表单提交通常会默认刷新您的页面,这可能是您看不到更改的原因。 尝试阻止默认行为

$('#sendNameForm').submit(function(event) {
event.preventDefault()
        var name = $('#name').val();
        dis_enableNameSend();
        alert("Success!");
        return false;
    });

【讨论】:

  • 实际上问题是我正在创建一个局部变量......但无论如何谢谢! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多