从请求 URL 中删除参数
remove parameters from request URL
我正在提交一个大表格。它有许多具有未指定值的字段,这些字段转换为 field=&field2=&field3...
.
我不希望这些出现在 GET 网址中。仅保留具有非空值的字段。
我想出了一种用jquery做到这一点的方法:
$('#form').live('submit', function() {
$('input[value=""]', '#form').remove();
});
我认为这完全可以做到我想要的。
但显然我错过了一些东西,因为这也会选择和删除input
输入的文本,而不仅仅是空文本。
上面的选择器(在 remove()
之前)包含 <input type="text" class="input-medium" name="field1" id="field1" value>
,所以看起来好像没有设置任何值。不过有一个值设置,正如所证实的那样 $('input[name="field1"]').val()
,这将正确返回屏幕上也可见的文本。
这是怎么回事?有什么想法吗?
使用 jquery 1.7.2,Chrome 18.0.1025.168。
请使用字段过滤,因为[value=""]
选择器会检查输入的默认状态。
$('#form').on('submit', function() {
$(':input', this).filter(function() {
return this.value.length == 0;
}).remove();
});
演示:http://jsfiddle.net/bCskH/
更新:为了不删除输入字段,您可以简单地禁用它们:
$('#form').on('submit', function() {
$(':input', this).filter(function() {
return this.value.length == 0;
}).prop('disabled', true);
});
效果是一样的,但恕我直言,:)
演示:http://jsfiddle.net/bCskH/1/
jquery 选择器和serialize()
仅选择具有值的输入这是示例
<form id="test">
<input name="field1" value="Test"><br/>
<input name="field2" value=""><br/>
<input name="field3" value="value"><br/>
<input id="btn" type="button" value="submit"/>
</form>
$('#btn').on('click',function() {
alert($('#test input[value != ""]').serialize());
});
我也怀疑,.live()
是否可以在 jquery 1.7 中使用 .on()
代替。看到这个链接,它说它已被弃用
[value=".."]
访问未与当前值同步的属性。除此之外,您不能将选择器指定为上下文 - 因此#form
移动到主选择器并使用.filter()
将匹配的元素限制为空元素:
$('#form input').filter(function() {
return !$(this).val();
});
- 删除处于抽象状态的参数angular
- JS:删除带有接受参数的处理程序的事件侦听器
- 谷歌应用脚本中的 UrlFetchApp.fetch 删除 url 参数
- getJSON()-如何删除数据参数前面的AND符号
- 可以't获取此函数以删除基于javaScript中后续参数的特定元素
- 使用Javascript从url中删除参数
- 使用正则表达式删除网址参数
- 通过删除一个参数及其值来清理 URL
- 从 JavaScript 中的参数中删除参数
- 从请求 URL 中删除参数
- 从查询字符串中删除参数而不重新加载
- 以不正确的顺序从绑定中删除2.0参数
- 使用jQuery或JavaScript从url中删除参数
- 从url中删除参数
- 如何在URL中删除参数并在地址栏中显示它,而不会在Javascript中引起重定向
- 从url中删除参数无效
- 从URL中删除参数
- 不能使用javascript删除参数
- 在重定向后从url中删除参数
- 如何从url查询中删除参数