使用jquery变量更新html“value”

时间:2014-06-23 23:08:40

标签: javascript jquery html

所以我正在构建一个消息传递应用程序,用户点击一个按钮,会显示一个jquery提示符,要求用户键入他们的消息,然后理想情况下使用单独的ajax函数发送消息。

以下是相关代码:

jQuery消息提示功能:

        function getInput() {
         var text = prompt("Enter message", "");

            if (text != null) {
            document.getElementById("demo").innerHTML = text; //failed attempt at updating the value just using the id of the input. 
            }
    }

HTML:

<form name="messagesend" method="post" onsubmit="return sendMessage(this);">   
<input type="hidden" id="demo" name="message" value="I want to update this field with the result of the javascript text variable" />
<input type="hidden" name="regId" value="<?php echo $row["gcm_regid"] ?>"/>
<input type="submit" class="send_btn" value="Volume-Vibrate" onclick="getInput()"/>
</form>

如您所见,我想要更新的字段是value中包含的字符串,即发送的消息。如何使用用户在文本提示中放置的结果更新?

非常感谢任何帮助!

修改

将jQuery函数更新为以下内容:

        function getInput() {
         var text = prompt("Enter message", "");

            if (text != null) {
                $("#demo").val(text);
            }
    }

这可能是一个不同的问题,但是当点击我最初发布的HTML中创建的按钮时,它会显示提示并输入消息,但我放置的默认值仍然是正在发送的消息。是

onsubmit="return sendMessage(this);"

在jQuery更新值字段之前执行?如果是这样,无论如何都要解决这个问题?

如果有帮助,这里是sendMessage,它使用ajax将消息发送到php脚本。 HTML value字段(我试图使用getInput()从jQuery提示符获取用户输入字符串)成为data变量,其中还包含注册ID指定的邮件收件人。

        function sendMessage(formObj){
            var data = $(formObj).serialize();
            $(formObj).unbind('submit');                
            $.ajax({
                url: "send_message.php",
                type: 'GET',
                data: data,
                beforeSend: function() {

                },
                success: function(data, textStatus, xhr) {
                      $('.txt_message').val("");
                },
                error: function(xhr, textStatus, errorThrown) {

                }
            });
            return false;
        }

2 个答案:

答案 0 :(得分:4)

HTML字段没有内部HTML(标记是自动关闭的),它有(和value属性)。

但是当你使用jQuery时,你应该使用它的函数:$("#demo").val(text)

答案 1 :(得分:1)

正如@Lucas所说,$("#demo").val(text)有效(见JQuery documentation

另一种做同样事情的方法(按名称引用输入字段): $('input[name="demo"]').val()

但是,名称不必是唯一的,而id应该是唯一的(请参阅此SO answer)。将id="demo"添加到您的输入名称会更安全 - 在这种情况下过度杀伤,但这是一种很好的做法。