Во-первых, этот вопрос касается только JS, PHP не задействован,
В исходном вопросе нет разницы между отправкой JS и щелчком пользователя, реальной разницей будет только событие, инициирующее действие submit(события click
или change
, где evt.target
- это дом, инициирующий событие).
В качестве рекомендации привязайте ваши события, используя addEventListener
вместо прямого использования атрибута onchange
, это 'будет выглядеть так:
document.getElementsByName('sub_id')[0].addEventListener("onchange", function(evt) {
document.forms[0].submit();
});
Пожалуйста, попробуйте следующие решения:
1.Исправьте входные имена:
Из этого:
<input type='hidden' name='Value2' value='BlogSection'>
<input type='hidden' name='Value3' value='BlogName'>
Для этого, согласно вашему вопросу, все они должны быть в нижнем регистре:
<input type='hidden' name='value2' value='BlogSection'>
<input type='hidden' name='value3' value='BlogName'>
2.Исправьте реализацию JS onclick:
Из этого:
// unselect any selected item on the SELECT
if( document.getElementsByName('subscribe_check').selectedIndex )
document.getElementsByName('subscribe_check')[document.getElementsByName('subscribe_check').selectedIndex].selected = false;
// select select the last option
document.getElementsByName('subscribe_check')[1][3].selected = true;
Для этого, в соответствии с вашим вопросом, они должны указывать на sub_id
, также посмотрите индекс последней строки (idx * 1029)* не существует, оно должно быть [0][3]
):
// unselect any selected item on the SELECT
if( document.getElementsByName('sub_id').selectedIndex )
document.getElementsByName('sub_id')[document.getElementsByName('sub_id').selectedIndex].selected = false;
// select select the last option
document.getElementsByName('sub_id')[0][3].selected = true;
3.Выполните ту же самую функцию отправки
Измените свой HTML-код следующим образом:
<select class='forminput' name='sub_id' onchange='this.form.submit()'>
На это:
<select class='forminput' name='sub_id' onchange='document.forms[0].submit()'>
Также ...
Просто дляубедитесь, что больше ничего не измените свои входные значения, напечатайте их сразу после запуска onchange, как это ... и также отложите отправку и распечатайте их снова, что должно дать хорошее представление о том, что происходит:
document.getElementsByName('sub_id')[0].addEventListener("onchange", function(evt) {
console.log(document.getElementsByName('value2'), document.getElementsByName('value3'));
setTimeout(function() {
console.log(document.getElementsByName('value2'), document.getElementsByName('value3'))
document.forms[0].submit();
},100);
});