За последние 24 часа нас посетили 15732 программиста и 1666 роботов. Сейчас ищут 815 программистов ...

Не выполняется скрипт когда в форме

Тема в разделе "JavaScript и AJAX", создана пользователем Sergey9, 14 апр 2011.

  1. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    Подскажите кто понимает в javascript. Почему скрипт перестает работать внутри формы?

    <html>
    <head>...</head>
    <body>
    <form enctype="multipart/form-data" action="qwert.php" method="post" target="_blank" name="form1">

    <form name="form" onsubmit="return false;">
    <input name="newwindow" onclick="if(!this.checked) document.getElementById('pictogramm').checked=false;" type="checkbox"><font color='810000' size='1' face='tahoma'> Открывать в новом окне</font><br>
    <input name="noindex" type="checkbox"><font color='810000' size='1' face='tahoma'> Окружить тегом &lt;noindex&gt;</font><br>
    <input name="nofollow" type="checkbox"><font color='810000' size='1' face='tahoma'> Окружить тегом &lt;nofollow&gt;</font><br>
    <table><tr><td>
    <input name="url" type="text" size="30" value="Введите адрес сайта" /></td></tr><tr><td>
    <input name="txt" type="text" size="30" value="Введите текст ссылки" /></td></tr><tr><td>
    <input name="title" type="text" size="35" /></td></tr><tr><td>
    <input Value='Создать ссылку' type="submit" onclick='cr();' /></td></tr><tr><td>
    <div style='text-align:center;font-size:130%;border:solid 1pt;border-color:blue;padding:3pt;'><span id="linkview"><a href="http://htmlweb.ru/" target="_blank" title="всплывающая подсказка">мой сайт<img src="strelka.gif" border="0" height="15" width="5"></a></span></div>
    </td></tr><tr><td>
    Код вашей ссылки:
    <textarea id="codebox" rows="6" cols="30"></textarea>
    </td></tr><tr><td></td></tr></table></form>

    </form>
    </body>
    </html>

    А если убрать первую форму, то скрипт выполняется. ТОесть когда нажимаю на сабмит в скрипте, то браузер почему-то отправляет меня на страницу qwert.php. Но эта страница прописана для формы внешней, у которой своя кнопка сабмит.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    У тебя одна форма вложена в другую. Так не должно быть.
     
  3. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    да спасибо, просто так у меня и получается(
    но я заменил кнопка в скрипте на ссылку, которая так же достает функцию и исполняет
    <a href="javascript:%20x()" onclick="cr();"/>ghgfh</a>
     
  4. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    Блин, неа, не работает с ссылкой, а скрипт мне приходится размещать внутри формы. Блин может кто подскажет, как мне скрипт переделать так чтобы у него формы не стало...
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    По клику на кнопке типа submit у тебя просто отправляется форма. Что там делает скрипт, не понятно. И ты не увидишь, что он делает, т.к. страница перезагружается.
    Если хочешь сделать какие-то манипуляции с формой перед отправкой, то напиши в теге формы обработчик onsubmit
    Код (Text):
    1. <form onsubmit="cr()" action=....>
    Если хочешь, чтобы форма не отправлялась, то
    Код (Text):
    1. <form onsubmit='cr();return false;' action=....>
    Если хочешь отправить какую-то форму (у которой id='myForm') по клику на ссылке, то
    Код (Text):
    1. <a href="#" onclick="document.getElementById('myForm').submit()">
    А лучше подробней опиши, какой именно функциональности добиваешься
     
  6. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    функция скрипт находит по name="form", как мне можно сохранить этот идентификатор, и при этом убрать из скрипта форму?
     
  7. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    вообще ни о чем не говорит. Что это значит?
     
  8. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    <html>
    <head>
    <script type="text/javascript">
    function cr(){
    url=document.form.url.value;
    if(url==''||url=='http://'){alert("Укажите адрес сайта!");document.form.url.focus();return;}
    if(document.form.txt.value==''){alert("Укажите текст ссылки!");document.form.txt.focus();return;}
    if (url.indexOf(' ') >= 0||url.indexOf('.')<0) {alert("Укажите корректный URL!");document.form.url.focus();return false;}
    if (url.slice(0,7)!='http://')url='http://'+url;
    document.form.url.value=url;
    str='<a href="'+url+'"';
    if(document.form.newwindow.checked==1)str+=' target="_blank"';
    if(document.form.title.value!='')str+=' title="'+document.form.title.value+'"';
    str+='>'+document.form.txt.value;
    str+='</a>';
    if(document.form.noindex.checked==1)str='<noindex>'+str+'</noindex>';
    if(document.form.nofollow.checked==1)str='<nofollow>'+str+'</nofollow>';
    document.getElementById('linkview').innerHTML=str;
    document.form.codebox.value=str;
    }
    </script>
    </head>
    <body>
    <form enctype="multipart/form-data" action="qwert.php" method="post" target="_blank" name="form1">

    <form name="form" onsubmit="return false;">
    <input name="newwindow" onclick="if(!this.checked) document.getElementById('pictogramm').checked=false;" type="checkbox"><font color='810000' size='1' face='tahoma'> Открывать в новом окне</font><br>
    <input name="noindex" type="checkbox"><font color='810000' size='1' face='tahoma'> Окружить тегом &lt;noindex&gt;</font><br>
    <input name="nofollow" type="checkbox"><font color='810000' size='1' face='tahoma'> Окружить тегом &lt;nofollow&gt;</font><br>
    <table><tr><td>
    <input name="url" type="text" size="30" value="Введите адрес сайта" /></td></tr><tr><td>
    <input name="txt" type="text" size="30" value="Введите текст ссылки" /></td></tr><tr><td>
    <input name="title" type="text" size="35" /></td></tr><tr><td>
    <input Value='Создать ссылку' type="submit" onclick='cr();' /></td></tr><tr><td>
    <div style='text-align:center;font-size:130%;border:solid 1pt;border-color:blue;padding:3pt;'><span id="linkview"><a href="http://htmlweb.ru/" target="_blank" title="всплывающая подсказка">мой сайт<img src="strelka.gif" border="0" height="15" width="5"></a></span></div>
    </td></tr><tr><td>
    Код вашей ссылки:
    <textarea id="codebox" rows="6" cols="30"></textarea>
    </td></tr><tr><td></td></tr></table></form>

    </form>
    </body>
    </html>
    Вот я скинул полный скрипт вместе с функцией в <head>. Можно вставить в html страничку - должна заработать. Этот скрипт генерирует ссылку. И он будет находится внутри формы. Задача самого скрипта ничего никуда не отправлять, а просто собрать код ссылки и вывести его в спец поле. Тоесть чтобы он работал точно так же как он работает когда не окружен еще одной <форм>
     
  9. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    <form enctype="multipart/form-data" action="qwert.php" method="post" target="_blank" name="form1">
    </form>
    Чтобы скрипт работал внутри этой формы нужно точно так же, как равботает когда не находится в ней
     
  10. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    По идее мне нужно в скрипте снести форму, но как это сделать чтобы он остался рабочим?
     
  11. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Тут много переделывать нужно.
    Пока сделал, чтобы хоть url вставлялся в новое поле. Сейчас с чекбоксами вожусь.
    Вообще не понятно, что значит снести форму? И кто "он", который должен остаться рабочим, скрипт?
     
  12. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Теперь ссылка формируется, ничего не отправляется. Html не трогал, кроме первой формы, закомментировал её. Думаю, дальше разберешься.
    Код (Text):
    1. <html>
    2. <head>
    3. <script type="text/javascript">
    4. function cr(){
    5.     var frm=document.getElementById("myform");
    6.     var url=frm.url.value;
    7.     var txt=frm.txt.value;
    8.  
    9.     if(url==''||url=='http://'||url=='Введите адрес сайта'){alert("Укажите адрес сайта!");frm.url.focus();return false;}
    10.     if(txt==''||txt=='Введите текст ссылки'){alert("Укажите текст ссылки!");frm.txt.focus();return false;}
    11.     if(url.indexOf(' ') >= 0||url.indexOf('.')<0) {alert("Укажите корректный URL!");frm.url.focus();return false;}
    12.     if(url.slice(0,7)!='http://')url='http://'+url;
    13.     frm.url.value=url;
    14.  
    15.  
    16.     var str='<a href="'+url+'"';
    17.     if(frm.newwindow.checked==1)str+=' target="_blank"';
    18.     if(frm.title.value!='')str+=' title="'+frm.title.value+'"';
    19.     str+='>'+frm.txt.value;
    20.     str+='</a>';
    21.     if(frm.noindex.checked==1)str='<noindex>'+str+'</noindex>';
    22.     if(frm.nofollow.checked==1)str='<nofollow>'+str+'</nofollow>';
    23.     document.getElementById('linkview').innerHTML=str;
    24.     frm.codebox.value=str;
    25.     return false;
    26. }
    27. </script>
    28. </head>
    29. <body>
    30. <!--form enctype="multipart/form-data" action="qwert.php" method="post" target="_blank" name="form1"-->
    31. <!--/form-->
    32.  
    33. <form name="form" id="myform" onsubmit="return false;">
    34. <input name="newwindow" onclick="if(!this.checked) document.getElementById('pictogramm').checked=false;" type="checkbox"><font color='810000' size='1' face='tahoma'> Открывать в новом окне</font><br>
    35. <input name="noindex" type="checkbox"><font color='810000' size='1' face='tahoma'> Окружить тегом &lt;noindex&gt;</font><br>
    36. <input name="nofollow" type="checkbox"><font color='810000' size='1' face='tahoma'> Окружить тегом &lt;nofollow&gt;</font><br>
    37. <table><tr><td>
    38. <input name="url" type="text" size="30" value="Введите адрес сайта" /></td></tr><tr><td>
    39. <input name="txt" type="text" size="30" value="Введите текст ссылки" /></td></tr><tr><td>
    40. <input name="title" type="text" size="35" /></td></tr><tr><td>
    41. <input Value='Создать ссылку' type="button" onclick='return cr()' /></td></tr><tr><td>
    42. <div style='text-align:center;font-size:130%;border:solid 1pt;border-color:blue;padding:3pt;'><span id="linkview"><a href="http://htmlweb.ru/" target="_blank" title="всплывающая подсказка">мой сайт<img src="strelka.gif" border="0" height="15" width="5"></a></span></div>
    43. </td></tr><tr><td>
    44. Код вашей ссылки:
    45. <textarea id="codebox" rows="6" cols="30"></textarea>
    46. </td></tr><tr><td></td></tr></table>
    47.  
    48.  
    49. </form>
    50. </body>
    51. </html>
     
  13. Sergey9

    Sergey9 Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    Огромное спасибо!!!