我有一个表单,我想更改用户从<select></select>
下拉列表中选择一个选项的结果。JS选择更改时的更改表单操作不适用于.trim()
这里是我的形式:
<form role="form" method="post" id="switch-customer-form" class="switch-customer-form">
{% csrf_token %}
<div class="form-group col-xs-12 floating-label-form-group controls">
<select class="form-control customers-dropdown" id="customers-dropdown" name="form_customers">
{% for c in customers %}
<option{% if customer == c %} selected="true"{% endif %}>{{ c }} - {{ c.id }}</option>
{% endfor %}
</select>
</div>
<div class="form-group col-xs-12 floating-label-form-group controls">
<input type="submit" value="View Calendar" class="btn btn-primary btn-sm">
</div>
</form>
这里是我的(非工作)JS:
$("#customers-dropdown").change(function() {
var action1 = "/ac/calendar/";
var action2 = "/2014/12/";
var customer = $(this).val();
var customer_split = customer.split("-");
var customer_id = customer_split[1].trim();
var final_action = action1 + customer_id + action2;
alert(final_action);
$("#switch-customer-form").attr("action", final_action);
});
我遇到的问题是,在添加.trim()
到customer_id
变量初始化。出于某种原因,添加此功能时,它不再更改表格的action
。如果没有.trim()
它确实会正确更改操作,但是存在无用的空白,导致链接无法指向相应的页面。
.trim()
是否有什么造成这种情况?有没有更理想的方法从该变量中删除空格?谢谢你的帮助。
(为了清楚起见)更新:
这是我已经得到了成功改变形式行动的唯一JS,虽然它仍包括多余的空格:
$("#customers-dropdown").change(function() {
var action1 = "/ac/calendar/";
var action2 = "/2014/12/";
var customer = $(this).val();
var customer_split = customer.split("-");
var customer_id = customer_split[1];
var final_action = action1 + customer_id + action2;
alert(final_action);
$("#switch-customer-form").attr("action", final_action);
});
这是不添加值添加到<option>
标记。在这样做时,我遇到了同样的问题,它不更新表单操作,只是发布到当前页面。
作为arconmon说,你应该添加一个明确的'value'属性的选项元素,只是使用它。 – 2014-12-27 17:49:20