JQuery отправить форму с динамическим идентификатором не работает - PullRequest
0 голосов
/ 08 июля 2011

Я не могу отправить форму с динамическим идентификатором. Ниже мой код.

<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript">
var fval;    
var cvalue = "<?php echo $_POST['currentval']; ?>";
if(!(cvalue)) cvalue=0;
$(document).ready(function() {
$('#upload'+cvalue).submit(function() {
    var options = {
        target: '#message', 
        url:'process.php?sval='+cvalue, 
        success:  function() {
        alert("success");
        $('#uploader').html('');

        }
    };
$(this).ajaxSubmit(options);
return false;
});
});
</script>
<div id="message"></div>
<?php
for($i=0;$i<5;$i++) {
    echo "<form action='#' method='post'  name='upload' id='upload$i' enctype='multipart/form-data'>";   
    echo "<input type='hidden' name='svalhid'  id='svalhid' value='$i'>";
    echo "<input type='file' id='fl$i' name='filename".$i."up'>";
    echo "<input type='hidden' name='currentval' id='currentval' value='$i'>";
    echo "<input type='submit' name='uploads$i' value='Ok'><br>";
    echo '</form>';
}
?>

В этой строке $('#upload'+cvalue).submit(function() {

Я не могу получить оценку. Я не могу определить, что не так с этим кодом. Кто-нибудь, пожалуйста, помогите мне.

Ответы [ 3 ]

1 голос
/ 08 июля 2011

Проверьте следующую строку

echo "<form action='#' method='post'  name='upload' id='upload$i' enctype='multipart/form-data'>";

Вы действительно уверены, что напечатали правильное значение для атрибута id?

Я думаю, что существует два лучших способа:

1-й (лучший в моих глазах):

<?php
for($i=0;$i<5;$i++) {
?>
    <form action='#' method='post'  name='upload' id='upload<?php echo $i ?>' enctype='multipart/form-data'>";   
    <input type='hidden' name='svalhid'  id='svalhid' value='<?php echo $i ?>'>"
    <input type='file' id='fl<?php echo $i ?>' name='filename<?php echo $i ?>up'>";
    <input type='hidden' name='currentval' id='currentval' value='<?php echo$i ?>'>"
    <input type='submit' name='uploads<?php echo $i ?>' value='Ok'><br>"
    </form>'
<?php
}
?>

2-й: Измените упомянутую строку следующим образом:

echo "<form action='#' method='post'  name='upload".$i."' id='upload".$i."' enctype='multipart/form-data'>";

Примечание: вы определили пару форм с одинаковым именем,Насколько я знаю, атрибут 'name' является основным атрибутом для форм, а не атрибутом 'id'.

0 голосов
/ 13 июля 2011

Попробуйте использовать

var cvalue = "<?php echo $_GET['currentval']; ?>";

или

var cvalue = "<?php echo $_REQUEST['currentval']; ?>";

Также попробуйте, что @reporter сказал о форме id: id = 'upload ". $ I." Идентификатор формы должен совпадать с идентификатором, указанным здесь:

$('#upload'+cvalue).submit(function() {

Пример:

в JavaScript:

$('#upload').submit(function() {

тогда форма должна быть:

<form id="#upload" ...

Вы обязательно должны увидеть, что что-то случилось. Попробуйте установить firebug и использовать console.log (переменная здесь) вместо alert (переменная здесь). Это чище.

Надеюсь, что поможет

0 голосов
/ 08 июля 2011

Я не вижу, где вы назначаете что-либо кроме "" или 0 для cvalue.Кроме того, эти два назначения находятся за пределами $ (document) .ready (function () {, поэтому может произойти что-то странное с этим кодом, выполняющимся до полной загрузки документа. Переместите их внутрь вызова document.ready и посмотрите, чтослучается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...