Использование Javascript для проверки ответа в текстовом поле
Я новичок в Magento. У меня есть следующие требования.
На странице есть текстовое поле, в котором клиент вводит идентификатор. Как только идентификатор введен, мне нужно проверить, доступен ли этот идентификатор в OMS с помощью вызова веб-службы OMS. И если идентификатор действителен, мне нужно включить кнопку "Отправить" на странице. Если идентификатор недействителен, мне нужно отключить кнопку "Отправить". Не мог бы кто-нибудь дать мне какие-нибудь указания по этому поводу.
Спасибо
Обновление: Я пытался это сделать используя следующий код, Javascript: Функция будет вызываться при нажатии кнопки "Отправить"
submit.onclick = function()
{
$.ajax
({
url: "<?php echo $this->getUrl('checkout/OnepageController/checkid')?>",
type: "POST",
data: {id: '2345'},
dataType: json,
success: function(data) {
status = data;
}
});
if (status=='invalid')
{
alert('id function was not hit');
return false; // cancel submission
}
else if (status=='valid')
{
alert('id function was hit');
return true;
}
}
Php: Контроллер Magento
public function checkidAction()
{
$id = $_POST['id'];
if ($id=='1234')
{
$status = "valid";
}
else
{
$status ="invalid";
}
echo json_encode($status);
}
Не могли бы вы, пожалуйста, сказать мне, если здесь что-то не так. Я не могу вернуть информацию о статусе обратно в вызов ajax. Спасибо
1 answers
Я бы использовал класс проверки формы magento, затем создал новую "удаленную проверку", взглянул на Проверку AJAX поля формы Magento
В свой файл phtml добавьте
<script>
Validation.add('validate-customer-id', 'Please enter a valid id. For example xxx-yy-mmm.', function(v) {
// do your OMS webservice call in your controller
// you could use post this need to be secure
var url = '<?php echo $this->getUrl('checkout/OnepageController/checkid', array('id' => 2345))?>' + encodeURIComponent(v);
var result = false;
new Ajax.Request(url, {
method: 'get',
asynchronous: false,
onSuccess: function(transport) {
var obj = response = eval('(' + transport.responseText + ')');
if (obj.is_available === 0) {
result = false;
} else {
result = true; /* return true or false */
}
}
})
return result;
});
</script>
Обновите ввод с помощью
<input ... class=".. validate-customer-id" />
В вашем контроллере
public function checkidAction()
{
$id = $this->getRequest()->getParam('id');
if ($id=='1234')
{
$status = array('is_available' => 0);
}
else
{
$status = array('is_available' => 1);
}
echo json_encode($status);
}