首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改从两个选择中的值中获取的form action属性

更改从两个选择中的值中获取的form action属性
EN

Stack Overflow用户
提问于 2014-12-16 13:02:32
回答 3查看 168关注 0票数 1

我在这里发现了一个类似的问题:javascript -基于选择的更改表单操作?

但我的问题有点不同。我有两个选择:

代码语言:javascript
复制
 <form id="CarSearch" action="" method="post">
 <select name="style" id="Style">
 <option value="" selected>Any Style</option>
 <option value="style/sports-1">Sports</option>
 <option value="style/wagon-3">Wagon</option>
 <option value="style/suv-6">SUV</option>
 </select>

 <select name="make" id="Make">
 <option value="" selected>Any Make</option>
 <option value="make/porsche-3">Porsche</option>
 <option value="make/ford-6">Ford</option>
 <option value="make/volvo-7">Volvo</option>
 </select>
<input type="submit" value="submit"/>
</form>

我希望根据两个选择中的值构建form action属性。下面是一些情况:

  1. 如果样式和Make都设置为"Any“,因此没有值;表单操作应该是空白的
  2. 如果指定了样式,但Make不是;表单操作应该是,只是样式的值,例如action="style/sports-1"
  3. 如果指定了Make,但没有指定样式;表单操作应该是--仅是Make的值,例如action="make/volvo-7"
  4. 如果同时指定了样式和Make;表单操作应该是连接样式中的值,并使例如action="/style/sports-1/make/volvo-7"

这两个选择的默认值总是“任意”。我可以尝试在jQuery中为每个select创建两个变量,并在任何一个选择更改时设置它们的值。但让我困惑的是连体部分。

我在这里创建了一个JSFiddle来启动http://jsfiddle.net/L91rb9f9/3/

当没有指定样式时,我将以两个斜线结尾。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-16 13:23:39

试着做这样的事情:

代码语言:javascript
复制
$("#CarSearch").submit(function () {
    var style = $("#Style").val();
    var make = $("#Make").val();

    if (style == "" && make == ""){
        $('form').get(0).setAttribute('action', '');
    }
    else if (style != "" && make != "")  {
        $('form').get(0).setAttribute('action', style + "/" + make);
    }
    else {
        $('form').get(0).setAttribute('action', style + make);
    }
});
票数 2
EN

Stack Overflow用户

发布于 2014-12-16 13:23:11

代码语言:javascript
复制
<script>
function updateForm(){
    var formelem=$('#CarSearch');
    var styleelem=$('#Style');
    var makeelem=$('#Make');

    var action='/';
    action+=styleelem.val();
    if (action.length>1)action+='/';
    action+=makeelem.val();
    formelem.attr('action',action');
}
</script>
<form id="CarSearch" action="" method="post">
 <select onchange="updateForm();" name="style" id="Style">
 <option value="" selected>Any Style</option>


<option value="style/sports-1">Sports</option>
 <option value="style/wagon-3">Wagon</option>
 <option value="style/suv-6">SUV</option>
 </select>

 <select onchange="updateForm();" name="make" id="Make">
 <option value="" selected>Any Make</option>
 <option value="make/porsche-3">Porsche</option>
 <option value="make/ford-6">Ford</option>
 <option value="make/volvo-7">Volvo</option>
 </select>
<input type="submit" value="submit"/>
</form>
票数 1
EN

Stack Overflow用户

发布于 2014-12-16 13:32:25

下面的jQuery方法应该满足您的需求。

代码语言:javascript
复制
$("#CarSearch").click(function (){
    var style = $("#Style").val();
    var make = $("#Make").val();
    var formAction = "";

    if(style != "" && make != ""){
        formAction = "/" + style + "/" + make;
    }else if (style != "" && make == "") {
        formAction = style;
    }else if (style == "" && make != ""){
        formAction = make;
    }else {
       formAction = ""; 
    }
    $("#CarSearch").attr("action", formAction);
    alert('Form Action: ' + $("#CarSearch").attr("action"));
});

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27505285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档