【问题标题】:change input size depending on option selected根据选择的选项更改输入大小
【发布时间】:2012-06-03 07:51:26
【问题描述】:

我已经看到发布的类似问题并尝试更改它们以满足我的需求,但我对 javascript 的了解还不够,无法做到这一点。如果他们选择“状态”作为搜索选项,我想要做的就是将表单输入限制为 2 个字符。这就是我所拥有的:

function changeValue(){
var option=document.getElementById('searchtype').id;

if (option == ("A") || ("B") ){
document.getElementById('field').size="40";
}
else if(option=="C"){
document.getElementById('field').size="2";


<form action="results.php" method="post">
Search By:<br />
<select id="searchtype" name="searchtype" onchange="changeValue();">
<option id="A" value="name">Hospital Name<br /></option>
<option id="B" value="city">City</option>
<option id="C" value="state">State</option>
</select>
<br /><br />
Search:<br />
<input id="field" name="searchterm" type="text" size="0">

我做错了什么还是有更好的方法来做到这一点?

我在下面使用了 Jack 的代码并添加了 field.size 属性,因此我的输入匹配了最大允许字符数:(感谢 Jack)

script type="text/javascript">
function changeValue(dropdown) {
var option = dropdown.options[dropdown.selectedIndex].value,
field = document.getElementById('field');

if (option == 'name' || option == 'city') {
    field.maxLength = 40;
            field.size = 40;
} else if (option == 'state') {
    field.value = field.value.substr(0, 2); 
    field.maxLength = 2;
            field.size = 2;
}
}       
</script>

            <h1>Hospital Search</h1>
    <form action="results.php" method="post">
    Search By:<br />
    <select id="searchtype" name="searchtype" onchange="changeValue(this);">
    <option id="name" value="name">Hospital Name<br /></option>
    <option id="city" value="city">City</option>
    <option id="state" value="state">State</option>
    </select><br />
    Search:<br />
    <input id="field" name="field" type="text" size="40">
    </input>

在决定使用状态列表的下拉菜单会更好之后,我将其更改为:

<form action="results.php" method="post">
      Hospital Name:<br />
      <input name="searchterm_name" type="text" size="40">
      <br />
      <input type="submit" name="submit" value="Search">
      </form><br />
        <form action="results.php" method="get">
        City Name:<br />
        <input name="searchterm_city" type="text" size="40"><br />
        <select name="select_state">
        <option value="">None
        <option value="AL" Selected>Alabama
        <option value="AK">Alaska
        <option value="AZ">Arizona
                    </SELECT>
        <input type="submit" name="submit" value="Search">
      </form>

ED:使用表单方法“post”会导致浏览器在我每次点击返回按钮进入结果页面时抛出警告。我改为“获取”,因为该信息不敏感,现在它会在没有警告的情况下返回。

【问题讨论】:

  • onchange of dropdown,你不想清除文本框?
  • 是的,我想我可能会。我也意识到我应该像大多数网站一样给他们一个状态的下拉菜单来选择

标签: javascript html forms select input


【解决方案1】:

设置maxlength属性:

document.getElementById('field').maxlength = 2;

我现在意识到其余代码不太可能工作:

function changeValue(dropdown) {
    var option = dropdown.options[dropdown.selectedIndex].value,
    field = document.getElementById('field');

    if (option == 'name' || option == 'city') {
        field.maxLength = 40;
    } else if (option == 'state') {
        field.value = field.value.substr(0, 2); // before reducing the maxlength, make sure it contains at most two characters; you could also reset the value altogether
        field.maxLength = 2;
    }
}​

然后在你的 HTML 中:

<select id="searchtype" name="searchtype" onchange="changeValue(this);">

【讨论】:

  • size 和 maxlength 是输入标签的两个不同属性。他想改变大小而不是最大长度。
  • @PriyankPatel 引用:“我只想将表单输入限制为 2 个字符” - 设置 maxlength 会限制表单输入。设置size 只会改变外观。
  • 是的。我想将用户限制为只有 2 个字符的状态。虽然我意识到如果他们选择按状态搜索,我真正应该做的是给他们一个状态的下拉列表
  • @PriyankPatel 不,限制为仅 2 个字符意味着设置最大长度;更新显示尺寸,尽管相关,是可选的;事实证明,状态下拉会更好:)
  • 我将开始尝试找出各州的下拉菜单。我相信你很快就会看到我的另一个问题。哈哈。谢谢
【解决方案2】:

试试这个。

document.getElementById('field').setAttribute('size', "10");

【讨论】:

    【解决方案3】:

    试试这个

    function changeValue() {
        var option2 = document.getElementById('searchtype').options[document.getElementById('searchtype').selectedIndex].id;
        if (option2 == ("A") || option2 == ("B")) {
            document.getElementById('field').size = "40";
        }
        else if (option2 == "C") {
            document.getElementById('field').size = "2";
        }
    }​
    

    【讨论】:

    • 非常接近。我现在有两个问题。输入字段默认为其他长度,直到我选择一个选项,然后返回该选项以获取第一个选项。最后两个工作,但我的第二个问题是我认为 PriyankPatel 是正确的。我想限制最大长度和大小
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2019-03-03
    • 2013-09-27
    相关资源
    最近更新 更多