2016-05-18 69 views
0

令人难以置信的简单。有人提出了类似的问题,但我无法使其发挥作用。我是JavaScript的中级初学者,但是对于jQuery来说是全新的。我只想将一个文本输入捕获到一个变量中(稍后用于提交API),现在将其显示在网页上以确认我捕获了它。我试图避免使用JavaScript来获得价值,以了解这个jQuery。以形式显示文本为HTML,显示和显示

我的HTML:

<form id='myForm'> 
    Zip: <input type="text" id='zip' /> 
    <input type="submit" value="Submit" id='submit' /> 
    <p id='showZip'>Not here yet</p> 
</form> 

我的jQuery:

$(document).ready(function() { 
    $('#submit').click(function() { 
    var myZip = $('#zip').val(); 
    $('#showZip').html(myZip); 
    }); 
}); 

编辑:我的意思是补充,它实际工作,我简要地看到HTML,然后将其重置。

+0

请说明您的代码所期望的行为,或不想要的一个,如果事情是错的。到目前为止,我可以告诉你,你没有避免提交表单,'.click'中的函数接受一个事件对象的参数,将其命名为'ev',并调用ev.preventDefault()',以便表单不提交和重新加载页面,或类似的东西。 –

+0

对不起,表格很差,我忘了添加行为。我在编辑条目。我认为你正在解决我的问题。请参阅上文。 – hikinthru

回答

1

尝试使用preventDefault();(​​),它将防止表单提交和重置。

为此,作如下更新您的代码:

$(document).ready(function() { 
    $('#submit').click(function(event) { 

    event.preventDefault(); 

    var myZip = $('#zip').val(); 
    $('#showZip').html(myZip); 
    }); 
}); 
+0

这就是我正在寻找的。我曾看过它,但无法再为此找到它。谢谢! – hikinthru

3

一般而言,jQuery和Javascript不会持续跨页面提交,除非它存储在一个像<input>那样能够这样做的元素中,然后在重新加载时将该值传回页面(使用您首选的服务器端技术)。

既然你已经有了,将举行你的价值元素,考虑增加一个name属性,它可以让你的服务器端代码中访问值:

<!-- The name attribute will post the value in this to a key named 'zip' --> 
<input type="text" id='zip' name='zip' /> 

关于你的代码

您的代码实际上应该是正确的,但是当您的表单被提交时,页面标记的任何更改(即设置您的showZip元素的HTML)将被删除,如下所示:

enter image description here

您会注意到替换正在发生在实际页面被刷新之前,因为它被发布到服务器。

+0

我替换了:var myZip = $('#zip')。val(); var myZip = $('input [name =“zip”]')。val();但得到了相同的结果。 – hikinthru

+0

,我在文本输入中添加了'zip'的'name'属性。 – hikinthru

+0

你之前的代码很好(但是你的输入中可能需要添加name属性)。值得注意的是,这可能是服务器端需要解决的问题。当你发布你的'

'时,一个值将被发送到'zip'键,你应该可以使用类似'Request [“zip”]','$ _POST [“zip”]' 'params [:zip]'等等(你的语言可能会有所不同)。根据您使用的技术,您可能希望将showZip元素的内容替换为发布到服务器的值,否则显示“尚未到达”。那有意义吗? –