.replace不能在serializeArray()中使用值

时间:2013-10-09 21:39:51

标签: jquery ajax

我正在尝试遍历表单并用某个字段的+替换任何空格实例。似乎我可以直接更改值,但我无法让它替换该值中的任何空格实例。

请参阅下面的代码:

$('#search-form').bind('submit', function(){

  var params = new Array();

  $.each($(this).serializeArray(), function(i, field){

       if(field.name == 'submit' || field.name == 'reset') return;

       if(field.name == 'location' && field.value.indexOf(' ')>=0)
       {
            // this is where I am struggling
            this.value.replace(/ /g,"+");
            alert(this.value);
       }                    

       params.push(field.name + '=' + encodeURIComponent(field.value));

  });

  do_search(params.join('&'));

  return false;
});

非常感谢任何帮助。

由于

*编辑感谢帮助人员。我今天学到了关于.replace的新内容。

1 个答案:

答案 0 :(得分:1)

您需要将替换值分配给值

所以而不是

this.value.replace(/ /g,"+");

将其更改为

this.value = this.value.replace(/ /g,"+");

所以整件事情看起来像这样

$('#search-form').bind('submit', function(){

  var params = new Array();

  $.each($(this).serializeArray(), function(i, field){

       if(field.name == 'submit' || field.name == 'reset') return;

       if(field.name == 'location' && field.value.indexOf(' ')>=0)
       {
            // this is where I am struggling
            field.value = field.value.replace(/ /g,"+");
       }                    

       params.push(field.name + '=' + encodeURIComponent(field.value));

  });

  do_search(params.join('&'));

  return false;
});