javascript - jQuery 将选择字段和文本输入值实时合并到另一个文本字段

标签 javascript jquery forms

我有一个三字段表单。我希望第三个字段(文本框)显示前两个字段的组合......一个是选择字段,另一个是文本字段;这些值用空格分隔。我尝试了以下方法但收效甚微。

<form>
    <select name="val1" id="val1">
        <option value="">Select a value</option>
        <option value="foo">foo</option>
        <option value="bar">bar</option>
    </select>
    <input name="val2" id="val2" />
    <input name="val3" id="val3" />
</form>
<script>
    $('#val1, #val2').keyup(function(){ $('#val3').val($('#val1').val()+' '+$('#val2').val()); });
<script>

我期望的是,当用户从选择字段中选择一个选项时,值将出现在第三个表单字段中,当用户在第二个字段中键入内容时,其值也会出现在第三个字段中(分隔)有一个空格。这一切都将实时发生。奇怪的是,jQuery 代码在所有浏览器中都不执行任何操作。

也许与 keyup() 函数有关,因为选择字段仅使用鼠标。但即使我忽略选择字段并在第二个字段中输入某些内容,它也应该单独出现在第三个字段中,但事实并非如此。

最佳答案

您的 #val1 是一个 select 元素,无法用它调用 keyup 事件。

相反,您需要使用change事件。

$('#val1').change(function () {
    changeThird();
});

$('#val2').keyup(function () {
    changeThird();
});

function changeThird() {
    $('#val3').val($('#val1').val() + ' ' + $('#val2').val());
}

JsFiddle:http://jsfiddle.net/ghorg12110/e7ru9jao/

对于asp:TextBox,如果想获取生成的数据,需要使用.attr():

$('#val1').change(function () {
    changeThird();
});

$('#val2').keyup(function () {
    changeThird();
});

function changeThird() {
    $('#val3').attr("value", $('#val1').val() + ' ' + $('#val2').val());
}

关于javascript - jQuery 将选择字段和文本输入值实时合并到另一个文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29241147/

相关文章:

jquery - 使用 django 生成文件以使用 javascript/jQuery 下载

php - symfony:如何将屏幕放在窗体错误上?

javascript - 使用 JQuery 验证表单(无需专用库)

javascript - html/js onclick 未按要求工作

javascript - 解析服务器云代码 - 检查用户名

javascript - 在鼠标悬停时显示 d3.layout.force 链接工具提示

javascript - 双 "for"循环(循环中循环)

javascript - 正则表达式以反斜杠结尾

html - 计算每个段落中的字符数

javascript - 使用 JavaScript 时强制 Safari 表单自动填充条目以防止表单提交