3

我想知道如何在 mysql 数据库中以复选框的形式搜索用户提供的输入。但在此之前,我需要将选中的字段放入一个 javascript 数组/字符串中,以便我可以使用 url 将其传递给 PHP。

<form>
    <input type="checkbox" id="interests" name="interests" value="Food">`
    <input type="checkbox" id="interests" name="interests" value="Movies">`
    <input type="checkbox" id="interests" name="interests" value="Music">`
    <input type="checkbox" id="interests" name="interests" value="Sports">`
</form>

对于其他表单元素,例如文本和选择输入,我可以执行上述操作,但不确定如何为复选框执行此操作。请帮忙。谢谢

4

4 回答 4

3

而不是

<form> 
<input type="checkbox" id="interests" name="interests[]" value="Food"> 
<input type="checkbox" id="interests1" name="interests[]" value="Movies"> 
<input type="checkbox" id="interests2" name="interests[]" value="Music"> 
<input type="checkbox" id="interests3" name="interests[]" value="Sports">

将 name 属性从更改interestsinterests[] 应该解决您的问题。如果我对属性有误,我很抱歉,PHP 有点不习惯,但我很确定。无需对 javascript 做任何事情。这样就容易多了。当然,如果你不想轻松...

关于您通过数据库搜索的第一个问题,我不明白您为什么需要这样做?如果它是一个复选框,您确切地知道它应该是什么,所以只需将其插入到您的数据库中,如下所示:

INSERT INTO your_table values(user_id_i_guess, interests...);

你明白了吗?

于 2012-06-13T07:27:21.427 回答
2

代码中的问题

  • 不要id对多个元素使用相同的

  • 将复选框的名称更改为interests[]

jQuery

var vals = [];

$(':checkbox:checked[name^=interests]').val(function() {
   vals.push(this.value);
});

如果要将数组转换为逗号分隔的字符串,请尝试

val.join(',');

笔记

$(':checkbox:checked[name^=interests]')name选择器以 .开头选择所有选中的复选框interests

于 2012-06-13T07:38:28.990 回答
0
  1. 您必须为复选框使用不同的 id(元素的 id 必须是唯一的)
  2. 为复选框兴趣 [] 命名并提交表单 - 在服务器上,您可以使用数组 $_POST['interests'] 或 $_GET['interests']
于 2012-06-13T07:24:20.880 回答
0

假设您的表单有名称,

var c = [],
    els = document.forms.formName.elements,
    len = els.length;

for ( var i = 0; i < length; i++ ) {

    if ( els[ i ].type === 'checkbox' ) {

        // If you want to add only checked checkboxes, you can use:
        if ( els[ i ].checked ) c.push( els[ i ].value );

        // If you don't care, just use:
        c.push( els[ i ].value );
    }
}

console.log( c ); // Array of the checkboxes values

如果您不关心旧版浏览器,则可以使用map更简洁的代码:

var c = [].map.call( document.forms.formName.elements, function( el ) {
    if ( el.type === 'checkbox' ) {
        if ( el.checked ) return el.value;
    }
} );

如果你有 jQuery,这里有一些 codez:

var c = $( ':checkbox:checked' ).map( function() {
    return $( this ).val();
} );

console.log( c ); // Array of the checkboxes values

// To be more precise (so, more performant), you can use the following selector:
$( ':checkbox:checked', document.forms.formName.elements )
于 2012-06-13T07:30:28.627 回答