需要从多选选项组合值形成一个url与javascript
Need to combine values from multiselect option to form a url with javascript
我正在使用一个允许在我的网站上搜索房地产的应用程序。这款应用的搜索功能非常有限,所以我选择了它,并尝试通过IDX解决方案提供商提供的URL参数来增强它。其中一个参数是创建一个URL并组合多个城市名称,以便一次搜索多个城市的列表。我已经添加了一个多选择字段的形式,但问题是,每个城市之间必须有一个序列号<>符号。
搜索结果是这样的第一个城市必须是number <0>:
www.yourblog.com/idx/? idx-q-Cities<0> = Irvine& idx-q-Cities<1> =拉古纳海滩% 20
我需要一种方法,为在多个选择字段中选择的选项进行组合,以实现上述结果。
下面是有多重选择的部分。
<form action="http://www.mmysite.com/idx/" method="get" onsubmit="prepareSearchForm(this)">
<table>
<tr>
<th><label for="idx-q-Cities">Select Your Cities</label></th>
<td>
<select multiple name="idx-q-Cities" title="Type or select your cities">
<option id="idx-q-Cities" class="idx-q-Cities" value="Abbeville">Abbeville</option><br>
<option id="idx-q-Cities" class="idx-q-Cities" value="Abilene">Abilene</option>
</select>
</tr>
</table>
</form>
我找人帮我试着让它工作,但是没有成功。这是他们想出的办法。也许会有帮助。
<script>
function prepareSearchForm(form){
var count = 0;
$(form).children('.idx-q-Cities').each(function(i,o){
var cityDOM = document.createElement('select');
cityDOM.name = "idx-q-Cities<" + count++ + ">";
cityDOM.value = o.value;
form.appendChild(cityDOM);
});
return true;
}
</script>
关于如何纠正上述JS或另一种方式采取多选择选项,并结合它们,以结束上面的URL有什么想法?
好吧,我给你这个:
function prepareURL() {
var vals = $('select option:selected').map(
function(i){
return $(this).attr('class') + '<' + i + '>=' + $(this).val();
}).get().join(';');
var URL = 'www.yourblog.com/idx/' + vals;
$('#urloutput').text(URL);
}
$('select').click(
function() {
prepareURL();
});
JS Fiddle demo.
但我不确定如果你想要第一个选择的'get'选项是0
(无论是Abeline或Abbeville),或者如果你想Abbeville 总是是0
选项和Abeline 总是是1
选项。所以我也给你提供了一个基于这种可能性的选择:
function prepareURL() {
var vals = $('select option:selected').map(
function(){
return $(this).attr('class') + '<' + $(this).index('select option') + '>=' + $(this).val();
}).get().join(';');
var URL = 'www.yourblog.com/idx/' + vals;
$('#urloutput').text(URL);
}
$('select').click(
function() {
prepareURL();
});
JS FIddle demo.
另外,考虑到这似乎是一个GET字符串,我不禁觉得你应该在URL的某个地方有一个?
。但我把它留给你去实现,以防你出于某种原因不希望它在那里。
并且,作为(最后的?)补充,我强烈建议在将vals
变量作为URL提交之前对其进行URL编码:
var URL = 'www.yourblog.com/idx/' + encodeURIComponent(vals);
$('#urloutput').text(URL);
JS提琴演示
如果使用PHP,则更改:
<select multiple name="idx-q-Cities" title="Type or select your cities">
:
<select multiple name="idx-q-Cities[]" title="Type or select your cities">
你的javascript肯定是错的。在服务器端执行此操作
- 我应该如何从xml文件构建一个javascript页面
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何将一个JavaScript函数回调为多个函数
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 多次调用另一个javascript函数中的javascript函数
- HTML外部javascript加载另一个javascript
- 在一个javascript文件中为整个网站创建标签
- 在任何AJAX调用之前触发一个javascript函数
- 如何用另一个Javascript更改Javascript函数值
- 动态创建一个javascript/jquery多级数组
- 将变量值从一个javascript传递到另一个javascript
- 获取一个javascript对象attr's
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 添加一个javascript函数来下载elfinder上的事件
- 有没有一个Javascript代码可以看到你的缓存有多满
- 使用jenkins从不同文件夹中的文件构建一个javascript文件
- 是否有一个javascript库来解析简单的查询
- 一个javascript实现base64图像编码并将结果写入文本文件
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器