2016-04-10 2 views
-1

Можем ли мы поместить строковый параметр в JS-функцию, а я в html? Как это:HTML: параметр в функции javascript

<form name="form3" action="mat.py" method="get" onsubmit="return validation(param1,param2)"/> 

Я также могу сказать, что я работаю в Python, поэтому мой код так: есть только два «», я не думаю, что он может иметь дело ущерб

print'<form name="form3" action="mat.py" method="get" onsubmit="return validation(param1,param2)"/>' 

Я включил свой JS в другой файл

Thank you, Clément.

+0

атрибут действия должна быть URL-адресом. Что такое mat.py? Это не может быть скрипт –

+0

@joelgoldstick: Это «действие» в порядке. Он отправляет относительный URL-адрес «mat.py», который предположительно является Python, запущенным сервером, так же как «mat.php» будет PHP, запущенным сервером, или «mat.jsp» будет Java, запущенным сервером. –

ответ

0

Я нашел. Я сделал огромную ошибку: я забыл это на .js файл:

#! /usr/bin/env python 

есть хороший день

0

Есть три слоя к этому утверждению:

print'<form name="form3" action="mat.py" method="get" onsubmit="return validation(param1,param2)"/>' 

Там в

  1. Питон слой, весь HTML, что это одна большая строка в ' кавычки.

  2. HTML-уровень, который помещает значения атрибутов в " цитаты.

  3. Уровень JavaScript, в котором у вас пока нет кавычек.

Важно следить за тем, что происходит на каждом уровне.

Итак, у вас есть несколько вариантов:

  1. Выведение JavaScript код внутри HTML attribuets поэтому JavaScript изначально было два вида котировок (теперь три), как " и '. Таким образом, вы можете использовать \ в коде Python поставить ' вокруг Params:

    print'<form name="form3" action="mat.py" method="get" onsubmit="return validation(\'param1\', \'param2\')"/>' 
    

    что выводит этот:

    <form name="form3" action="mat.py" method="get" onsubmit="return validation('param1', 'param2')"/>' 
    

    Примечание мы используем ' вокруг строк JavaScript, чтобы не до конца атрибут HTML раньше.

    Это также работает, если мы используем ' для HTML атрибутов кавычки и " в JavaScript, так как HTML также позволяет оба вида котировок:

    print'<form name=\'form3\' action=\'mat.py'\ method=\'get\' onsubmit=\'return validation("param1", "param2")\'/>' 
    

    , который выводит

  2. Помните, что содержимое атрибутов HTML - это HTML, поэтому вы можете использовать &quot;, именованный символ для ":

    print'<form name="form3" action="mat.py" method="get" onsubmit="return validation(&quot;param1&quot;, &quot;param2&quot;)"/>' 
    

    , который выводит

    <form name="form3" action="mat.py" method="get" onsubmit="return validation(&quot;param1&quot;, &quot;param2&quot;)"/> 
    

    Не очень читаемым, хотя. :-)

Но лучший вариантом является не использовать onxyz обработчиков атрибутов на всех, использовать современные методы для подключения событий.

+0

(я пишу) Это не работает. Я не думаю, что HTML понимает, что это параметр. Он принимает это как строку: для него это «param1», а не мой параметр1. Какая «современная техника»? – Souin

+0

@ ClémentB: Извините, я пропустил бит Python. Исправлена. –

0
File "/usr/lib/python2.7/CGIHTTPServer.py", line 252, in run_cgi 
    os.execve(scriptfile, args, env) 
OSError: [Errno 8] Exec format error 
127.0.0.1 - - [10/Apr/2016 15:26:46] CGI script exit status 0x7f00 

В этом проблема. Я не знаю почему, но ваш код не работает.