Как обновить значение ввода текста в JS Var в JQuery - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть jquery + плагин Boxy + форма ввода беспорядка.

Вот такая ситуация:

1 - когда я нажимаю на ссылку, во всплывающем окне появляется форма, содержащая только текстовый ввод и кнопку отправки.

2- Когда я пишу какой-то текст и нажимаю кнопку отправки, я получаю значение ввода текста в js var и отправляю его с помощью ajax в функцию PHP, которая выполняет операцию и возвращает результат.

3 - я получаю результат, и всплывающее окно закрывается. Все хорошо.

Моя проблема начинается, когда я хочу повторить операцию. Когда я щелкаю ссылку на шаге 1, чтобы отобразить форму, ввод текста в форме все еще имеет первое значение операции. Я думал, что это должна быть новая форма, но она, кажется, все еще первая. Я не знаю, как обновить значение ввода текста.

Вот мой код: (все еще в стадии разработки)

<script type="text/javascript">
    $(document).ready(function() {

    var myForm = '<div><form action="" method="">';
    myForm += 'New gallery name <input type="text" name="galleryName" /><br />';
    myForm += '<input type="button" name="create" value="create" />';
    myForm += '</form></div>';

    var littleWindow = null;
        $('#new_gallery').click(function(){
            littleWindow = new Boxy(myForm,
                    {
                        type:'POST',
                        modal:true,
                        closeable:true,
                        title:'some title',
                        behaviours: function(c) {
                            c.find('input[name="create"]').click(function(){
                                var newGalleryName = $('input[name="galleryName"]').val();
                                if(newGalleryName.length < 3)
                                {
                                    Boxy.alert('Please, write a name for your gallery');
                                } else {
                                    alert(newGalleryName);//To check its value. It doesn´t refresh!

                                    $.post('photos/new_gallery/'+newGalleryName,function(data){
                                        if(data=='error')
                                        {
                                            Boxy.alert('ERROR',function(){littleWindow.hide()});
                                        } else {
                                            Boxy.alert('the gallery with ID '+data+' has been created',function(){
                                                    littleWindow.hide(function(){
                                                            var newGalleryDiv = '<div class="gallery" title="'+data+'"><h3>'+newGalleryName+'</h3></div>';
                                                            $('#galleries').append(newGalleryDiv);
                                                        });
                                                }); 
                                        }//else #2
                                    });

                                }//else #1
                            });
                        }//behaviours
                    });
         });

    });
    </script>

Почему во второй раз я делаю $ ('# new_gallery'). Click (function () {... У меня нет новой новой формы?

Может кто-нибудь дать мне свет? Заранее спасибо.

EDIT

Я опубликовал видео на Youtube, чтобы показать вам мою проблему:

http://www.youtube.com/watch?v=fNftwwVXvYc (рекомендуется 1080) В видео код и сеть на испанском языке. Я перевел это здесь, в StackOverflow.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2010

Ара ты смешиваешь PHP и JavaScript? В JavaScript нет оператора .=. Вы, вероятно, хотели использовать +=

0 голосов
/ 15 сентября 2010
$('input[name="galleryName"]').val("");

или

$('input[name="galleryName"]').attr("value","");

используйте это в конце вашего скрипта, это очистит ваш ввод формы

EDIT

Вы пытались использовать что-то подобное

//BEFORE
$('#galleries').append(newGalleryDiv);
//AFTER
$('#galleries').append(newGalleryDiv).find('input[name="galleryName"]').attr("value","");
...