2016-08-17 14 views
0

Я использую XHTML, JSF и JavaScript для создания формы, проверяю, что информация была отправлена ​​в выбранные поля onclick в ah: commandButton, и если она проверена, перенаправляйте на другую страницу homepage.xhtml. Все работает до перенаправления, и я не могу работать.Как визуализировать новую страницу в скрипте javascript

В функции JavaScript Validation(), я пробовал location = "homepage.xhtml", window.location.href = "homepage.xhtml", location.url = "homepage.xhtml" и несколько других, но ничего не работает. У меня есть ощущение, что у меня должно быть какое-то утверждение, которое добавляет href = "homepage.xhtml" в h: commandButton, если Validate() возвращает true, но я не уверен, как это сделать.

Любая помощь очень ценится. Я добавил соответствующий код ниже.

Кнопка:

<h:commandButton class="btn btn-warning" value="Continue" onclick="Validation()"/> 

Validation

function Validation() { 

    var nameCheck = document.getElementById('formdiv:cardName'); 
    var numCheck = document.getElementById('formdiv:cardNumber'); 
    var expCheck = document.getElementById('formdiv:expDate'); 

    console.log(nameCheck.value); 
    console.log(numCheck.value); 
    console.log(expCheck.value); 

    var variablesToCheck = [nameCheck, numCheck, expCheck]; 

    for(i=0; i < variablesToCheck.length; i++){ 
     if(variablesToCheck[i].value == null || variablesToCheck[i].value == ""){ 

      alert("Fields marked with a * must be completed"); 
      return false; 

     } 
    } 
    // This is where the redirection needs to go, I think... 
    return true; 
} 

EDIT: Просто заметил, что если еще утверждение неверно логически, но синтаксически это не должно иметь значение. Часть else должна быть оператором вне цикла без условия; этот код просто пытается перенаправить, когда поле он проверяет есть что-то, не тогда, когда все поля имеют что-то в

EDIT 2:. Петля исправлен

+0

Не следует ли перенаправлять после цикла for? –

+0

@ JasperdeVries Да, я сам это заметил. Внесены изменения сейчас – CGurrell

+0

http://stackoverflow.com/questions/15515946/how-to-validate-a-field-in-jsf –

ответ

1

Почему вам нужно h:commandButton в любом случае вы используете простой javascript проверки h:commandButton визуализируется как <input type="submit" ../> его миссия представить форму так, что когда-либо Javascript вы пишете форму будут представлены и ваша страница собирается быть свежей, так Если вам это нужно таким образом, вы должны заставить его не отправить форму,

Однако от понимания ваших потребностей все, что вам нужно, это просто <a /> или <button />, или вы можете просто добавить type="button" в свой h:commandButton например: <h:commandButton type="button" .../>

+0

Я добавил type = "button", и он работал просто отлично! Спасибо за вашу помощь – CGurrell

+0

@CGurrell: Смотрите комментарий BalusC выше. Похоже, у вас есть Porsche 911, но попробуйте использовать его, как семейный автомобиль. – Kukeltje

0

Вы можете использовать .. window.location.replace('Your_url'); .. или можно использовать ..
window.location.href= 'Your_url'; .. Думаю, также должны быть и другие функции. Если вы хотите открыть его в другом окне, как всплывающее окно, вы можете использовать .. window.open('your_url');

Надеюсь, это поможет!

+0

Итак, window.location.replace и window.location.href не хотят работать, однако window.open работает в том смысле, что открывает страницу, которую я хочу его открыть в новом окне. Проблема в том, что он держит страницу, которую я хочу закрыть. – CGurrell

+0

Хм. Как говорится в нижеприведенном комментарии, почему бы вам не попробовать использовать форму с submit? Мне кажется хорошей идеей! –