2017-11-20 3 views
0

모달을 배우고 있습니다. 그래서 Jquery 문서에서이 코드를 사용했지만이 코드는 예상되는 출력을 제공하지 않습니다. 이 코드가 잘못된 점을 발견하지 못했습니다. I 출력이 유형 싶어 : Here is an axample 을하지만이 출력 여기 But I am getting this output 을 얻고 것은 코드입니다 : 여기 모달이 예상 출력을 제공하지 않습니다.

<script> 
    $(function() { 
     var dialog, form, 

    // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29 
    emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, 
    name = $("#name"), 
    email = $("#email"), 
    password = $("#password"), 
    allFields = $([]).add(name).add(email).add(password), 
    tips = $(".validateTips"); 

    function updateTips(t) { 
    tips 
    .text(t) 
    .addClass("ui-state-highlight"); 
    setTimeout(function() { 
    tips.removeClass("ui-state-highlight", 1500); 
    }, 500); 
    } 

    function checkLength(o, n, min, max) { 
    if (o.val().length > max || o.val().length < min) { 
    o.addClass("ui-state-error"); 
    updateTips("Length of " + n + " must be between " + 
     min + " and " + max + "."); 
    return false; 
    } else { 
    return true; 
    } 
    } 

    function checkRegexp(o, regexp, n) { 
    if (!(regexp.test(o.val()))) { 
    o.addClass("ui-state-error"); 
    updateTips(n); 
    return false; 
    } else { 
    return true; 
    } 
    } 

    function addUser() { 
    var valid = true; 
    allFields.removeClass("ui-state-error"); 

    valid = valid && checkLength(name, "username", 3, 16); 
    valid = valid && checkLength(email, "email", 6, 80); 
    valid = valid && checkLength(password, "password", 5, 16); 

    valid = valid && checkRegexp(name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter."); 
    valid = valid && checkRegexp(email, emailRegex, "eg. [email protected]"); 
    valid = valid && checkRegexp(password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9"); 

    if (valid) { 
    $("#users tbody").append("<tr>" + 
     "<td>" + name.val() + "</td>" + 
     "<td>" + email.val() + "</td>" + 
     "<td>" + password.val() + "</td>" + 
    "</tr>"); 
    dialog.dialog("close"); 
    } 
    return valid; 
} 

dialog = $("#dialog-form").dialog({ 
    autoOpen: false, 
    height: 400, 
    width: 350, 
    modal: true, 
    buttons: { 
    "Create an account": addUser, 
    Cancel: function() { 
     dialog.dialog("close"); 
    } 
    }, 
    close: function() { 
    form[ 0 ].reset(); 
    allFields.removeClass("ui-state-error"); 
    } 
}); 

form = dialog.find("form").on("submit", function(event) { 
    event.preventDefault(); 
    addUser(); 
}); 

$("#create-user").button().on("click", function() { 
    dialog.dialog("open"); 
     }); 
    }); 
</script> 

스타일 시트입니다 : 여기
<!doctype html> 
    <html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>jQuery UI Dialog - Modal form</title> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"> </script> 

</head> 
<body> 

<div id="dialog-form" title="Create new user"> 
    <p class="validateTips">All form fields are required.</p> 

    <form> 
     <fieldset> 
      <label for="name">Name</label> 
      <input type="text" name="name" id="name" value="Jane Smith" class="text ui-widget-content ui-corner-all"> 
      <label for="email">Email</label> 
      <input type="text" name="email" id="email" value="[email protected]" class="text ui-widget-content ui-corner-all"> 
      <label for="password">Password</label> 
      <input type="password" name="password" id="password" value="xxxxxxx" class="text ui-widget-content ui-corner-all"> 

      <!-- Allow form submission with keyboard without duplicating the dialog button --> 
      <input type="submit" tabindex="-1" style="position:absolute; top:-1000px"> 
     </fieldset> 
    </form> 
</div> 


<div id="users-contain" class="ui-widget"> 
    <h1>Existing Users:</h1> 
    <table id="users" class="ui-widget ui-widget-content"> 
     <thead> 
      <tr class="ui-widget-header "> 
       <th>Name</th> 
       <th>Email</th> 
       <th>Password</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>John Doe</td> 
       <td>[email protected]</td> 
       <td>johndoe1</td> 
      </tr> 
     </tbody> 
    </table> 
</div> 
<button id="create-user">Create new user</button> 


</body> 
</html> 

는 자바 스크립트 부분입니다 :

<style> 
    label, input { 
     display: block; 
    } 

     input.text { 
      margin-bottom: 12px; 
      width: 95%; 
      padding: .4em; 
     } 

    fieldset { 
     padding: 0; 
     border: 0; 
     margin-top: 25px; 
    } 

    h1 { 
     font-size: 1.2em; 
     margin: .6em 0; 
    } 

    div#users-contain { 
     width: 350px; 
     margin: 20px 0; 
    } 

     div#users-contain table { 
      margin: 1em 0; 
      border-collapse: collapse; 
      width: 100%; 
     } 

      div#users-contain table td, div#users-contain table th { 
       border: 1px solid #eee; 
       padding: .6em 10px; 
       text-align: left; 
      } 

    .ui-dialog .ui-state-error { 
     padding: .3em; 
    } 

    .validateTips { 
     border: 1px solid transparent; 
     padding: 0.3em; 
    } 
    </style> 

이 문제를 해결하는 방법을 알려주십시오. 제 실수를 무시하십시오.

+0

@SankarRaj 난 당신이 오류를 가지고나요 예상 출력 사진 –

+0

을 추가 한? – Sankar

+0

@SankarRaj 오류가 발생하지 않았습니다. 그러나이 코드는 예상되는 결과를 제공하지 않습니다. 단추를 클릭하는 동안 모달을 표시하려고하지만 모달을 표시하지 않고 일반 텍스트 만 표시합니다 –

답변

1

귀하의 기대에 부응하고 있습니다.

$(function() { 
 
    var dialog, form, 
 

 
    // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29 
 
    emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, 
 
    name = $("#name"), 
 
    email = $("#email"), 
 
    password = $("#password"), 
 
    allFields = $([]).add(name).add(email).add(password), 
 
    tips = $(".validateTips"); 
 

 
    function updateTips(t) { 
 
    tips 
 
     .text(t) 
 
     .addClass("ui-state-highlight"); 
 
    setTimeout(function() { 
 
     tips.removeClass("ui-state-highlight", 1500); 
 
    }, 500); 
 
    } 
 

 
    function checkLength(o, n, min, max) { 
 
    if (o.val().length > max || o.val().length < min) { 
 
     o.addClass("ui-state-error"); 
 
     updateTips("Length of " + n + " must be between " + 
 
     min + " and " + max + "."); 
 
     return false; 
 
    } else { 
 
     return true; 
 
    } 
 
    } 
 

 
    function checkRegexp(o, regexp, n) { 
 
    if (!(regexp.test(o.val()))) { 
 
     o.addClass("ui-state-error"); 
 
     updateTips(n); 
 
     return false; 
 
    } else { 
 
     return true; 
 
    } 
 
    } 
 

 
    function addUser() { 
 
    var valid = true; 
 
    allFields.removeClass("ui-state-error"); 
 

 
    valid = valid && checkLength(name, "username", 3, 16); 
 
    valid = valid && checkLength(email, "email", 6, 80); 
 
    valid = valid && checkLength(password, "password", 5, 16); 
 

 
    valid = valid && checkRegexp(name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter."); 
 
    valid = valid && checkRegexp(email, emailRegex, "eg. [email protected]"); 
 
    valid = valid && checkRegexp(password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9"); 
 

 
    if (valid) { 
 
     $("#users tbody").append("<tr>" + 
 
     "<td>" + name.val() + "</td>" + 
 
     "<td>" + email.val() + "</td>" + 
 
     "<td>" + password.val() + "</td>" + 
 
     "</tr>"); 
 
     dialog.dialog("close"); 
 
    } 
 
    return valid; 
 
    } 
 

 
    dialog = $("#dialog-form").dialog({ 
 
    autoOpen: false, 
 
    height: 400, 
 
    width: 350, 
 
    modal: true, 
 
    buttons: { 
 
     "Create an account": addUser, 
 
     Cancel: function() { 
 
     dialog.dialog("close"); 
 
     } 
 
    }, 
 
    close: function() { 
 
     form[0].reset(); 
 
     allFields.removeClass("ui-state-error"); 
 
    } 
 
    }); 
 

 
    form = dialog.find("form").on("submit", function(event) { 
 
    event.preventDefault(); 
 
    addUser(); 
 
    }); 
 

 
    $("#create-user").button().on("click", function() { 
 
    dialog.dialog("open"); 
 
    }); 
 
});
label, 
 
input { 
 
    display: block; 
 
} 
 

 
input.text { 
 
    margin-bottom: 12px; 
 
    width: 95%; 
 
    padding: .4em; 
 
} 
 

 
fieldset { 
 
    padding: 0; 
 
    border: 0; 
 
    margin-top: 25px; 
 
} 
 

 
h1 { 
 
    font-size: 1.2em; 
 
    margin: .6em 0; 
 
} 
 

 
div#users-contain { 
 
    width: 350px; 
 
    margin: 20px 0; 
 
} 
 

 
div#users-contain table { 
 
    margin: 1em 0; 
 
    border-collapse: collapse; 
 
    width: 100%; 
 
} 
 

 
div#users-contain table td, 
 
div#users-contain table th { 
 
    border: 1px solid #eee; 
 
    padding: .6em 10px; 
 
    text-align: left; 
 
} 
 

 
.ui-dialog .ui-state-error { 
 
    padding: .3em; 
 
} 
 

 
.validateTips { 
 
    border: 1px solid transparent; 
 
    padding: 0.3em; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<!doctype html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <title>jQuery UI Dialog - Modal form</title> 
 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
 
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"> 
 
    </script> 
 

 
</head> 
 

 
<body> 
 

 
    <div id="dialog-form" title="Create new user"> 
 
    <p class="validateTips">All form fields are required.</p> 
 

 
    <form> 
 
     <fieldset> 
 
     <label for="name">Name</label> 
 
     <input type="text" name="name" id="name" value="Jane Smith" class="text ui-widget-content ui-corner-all"> 
 
     <label for="email">Email</label> 
 
     <input type="text" name="email" id="email" value="[email protected]" class="text ui-widget-content ui-corner-all"> 
 
     <label for="password">Password</label> 
 
     <input type="password" name="password" id="password" value="xxxxxxx" class="text ui-widget-content ui-corner-all"> 
 

 
     <!-- Allow form submission with keyboard without duplicating the dialog button --> 
 
     <input type="submit" tabindex="-1" style="position:absolute; top:-1000px"> 
 
     </fieldset> 
 
    </form> 
 
    </div> 
 

 

 
    <div id="users-contain" class="ui-widget"> 
 
    <h1>Existing Users:</h1> 
 
    <table id="users" class="ui-widget ui-widget-content"> 
 
     <thead> 
 
     <tr class="ui-widget-header "> 
 
      <th>Name</th> 
 
      <th>Email</th> 
 
      <th>Password</th> 
 
     </tr> 
 
     </thead> 
 
     <tbody> 
 
     <tr> 
 
      <td>John Doe</td> 
 
      <td>[email protected]</td> 
 
      <td>johndoe1</td> 
 
     </tr> 
 
     </tbody> 
 
    </table> 
 
    </div> 
 
    <button id="create-user">Create new user</button> 
 

 

 
</body> 
 

 
</html>

+0

이 코드는 코드 스 니펫에서 작동하지만이 코드를 복사하여 윗주 텍스트 편집기에 붙여 넣으면 출력이 이전 하나. –

+0

작동해야합니다. 개발자 콘솔에서 오류를 확인하십시오. – Sankar

관련 문제