按类获取值

时间:2016-01-27 12:47:56

标签: javascript php jquery

我试了几个小时但找不到任何解决方案。

简化我的代码如下所示。

PHP:

foreach($db->query("SELECT id FROM news ORDER BY position ASC") as $row)
    {
    ...
     <input type="text" class="_title" >
     Search: <input type="file" class="_file" >     
     <input type='button' class="_submit" value='Save' > 
    ...
    }
?>

JS:

$(document).ready(function(){
    $("._submit").click(function(){

        ??  var _title = document.getElementById('_title'),
        ??  _file = document.getElementById('_file'); 

        var data = new FormData();
        data.append('SelectedFile', _file.files[0]);
        data.append('title', _title.value); 
        ...
</script> 

我不知道如何按班级获取数据。它通过ID工作,但我不能使用ID,因为foreach循环会有几个相同的ID。

尝试过这一点也没有成功:

var _file = document.getElementsByClassName('_file');

我希望有人可以帮助我。 米施

3 个答案:

答案 0 :(得分:3)

您可以将元素包装在容器div中,如

<?php
foreach($db->query("SELECT id FROM news ORDER BY position ASC") as $row)
    {
    ...
    <div class='container'>
     <input type="text" class="_title" >
     Search: <input type="file" class="_file" >     
     <input type='button' class="_submit" value='Save' > 
    </div>
    }
?>

然后使用.closest()遍历容器。在病房之后,您只需使用find来获取所需的元素。

<script>
$(document).ready(function(){
    $("._submit").click(function(){
        var container = $(this).closest('.container');
        var _title = container.find('._title'),
        var _file = container.find('._file')[0]; 

        var data = new FormData();
        data.append('SelectedFile', _file.files[0]);
        data.append('title', _title.value); 
        //Rest of your code
    });
 });
</script> 

答案 1 :(得分:1)

由于您使用的是jquery,因此您可以使用 .each() 函数和类选择器$('.class').each(function(){ var input_value = $(this).val(); }) 来遍历具有相同类的所有元素:

_title

由于您有多个字段_fileFormdata(),因此您应使用数组符号[]将其作为数组传递给var data = new FormData(); $('._file').each(function(){ var _file = $(this).val(); data.append('SelectedFile[]', _file.files[0]); }) $('._title').each(function(){ var _title = $(this).val(); data.append('title[]', _title); })

class Venue{
    //Getter and Setter 
}

class User{
    private String name;
    @DBRef
    private Venue venue;

    //Getter and Setter 
}

class Event {
    @DBRef
    private Venue venue;

    //Getter and Setter 
}

希望这有帮助。

答案 2 :(得分:0)

你还可以做一些与@satpal

相同的事情

将代码包装在div元素中。

<强> PHP:

foreach($db->query("SELECT id FROM news ORDER BY position ASC") as $row) { ... <div> <!-- wrapper --> <input type="text" class="_title" > Search: <input type="file" class="_file" >
<input type='button' class="_submit" value='Save' > </div> } ?>

然后尝试下面的代码。

<强> JS:

$("._submit").click(function(){

    var title = $(this).siblings('._title').val();
    var file = $(this).siblings('._file')[0].files[0];

     var data = new FormData();
    data.append('SelectedFile',file);
    data.append('title', title); 
});

上面的代码使用了.siblings()函数