多词干jquery表单不起作用

Posted

技术标签:

【中文标题】多词干jquery表单不起作用【英文标题】:Multi stem jquery form not working 【发布时间】:2015-03-31 08:57:09 【问题描述】:

下面是我的多步表单,但它不能正常工作,应该发生的是在单击下一步时转到下一个字段进行输入,但是当我单击下一步时它停留在该表单中没有任何反应。它停留在同一页面中即使单击下一个,它也只是被单击而没有任何功能

    <html>
    <head> 
    <title></title>
    <script type="text/javascript">
    //jQuery timevar current_fs, next_fs, previous_fs; //fieldsets
   var left, opacity, scale; //fieldset properties which we will animate
var animating; //flag to prevent quick multi-click glitches
 $(".next").click(function()
if(animating) return false;
animating = true;

current_fs = $(this).parent();
next_fs = $(this).parent().next();

//activate next step on progressbar using the index of next_fs
$("#progressbar li").eq($("fieldset").index(next_fs)).addClass("active");

//show the next fieldset
next_fs.show(); 
//hide the current fieldset with style
current_fs.animate(opacity: 0, 
    step: function(now, mx) 
        //as the opacity of current_fs reduces to 0 - stored in "now"
        //1. scale current_fs down to 80%
        scale = 1 - (1 - now) * 0.2;
        //2. bring next_fs from the right(50%)
        left = (now * 50)+"%";
        //3. increase opacity of next_fs to 1 as it moves in
        opacity = 1 - now;
        current_fs.css('transform': 'scale('+scale+')');
        next_fs.css('left': left, 'opacity': opacity);
    , 
    duration: 800, 
    complete: function()
        current_fs.hide();
        animating = false;
    , 
    //this comes from the custom easing plugin
    easing: 'easeInOutBack'
    );
 );
    $(".previous").click(function()
    if(animating) return false;
    animating = true;
    current_fs = $(this).parent();
    previous_fs = $(this).parent().prev();
    //de-activate current step on progressbar
    $("#progressbar                                                   li").eq($("fieldset").index(current_fs)).removeClass("active");
    //show the previous fieldset
    previous_fs.show(); 
    //hide the current fieldset with style
    current_fs.animate(opacity: 0, 
        step: function(now, mx) 
            //as the opacity of current_fs reduces to 0 - stored in "now"
            //1. scale previous_fs from 80% to 100%
            scale = 0.8 + (1 - now) * 0.2;
            //2. take current_fs to the right(50%) - from 0%
            left = ((1-now) * 50)+"%";
            //3. increase opacity of previous_fs to 1 as it moves in
            opacity = 1 - now;
            current_fs.css('left': left);
            previous_fs.css('transform': 'scale('+scale+')', 'opacity':                                            opacity);
        , `enter code here`
        duration: 800, 
        complete: function()
            current_fs.hide();
            animating = false;
        , 
        //this comes from the custom easing plugin
        easing: 'easeInOutBack'
    );
);
$(".submit").click(function()
    return false;
)
</script>
<style>/*importing Sniglet*/
@import url("http://fonts.googleapis.com/css?family=Sniglet");
/*basic reset*/
* margin: 0; padding: 0; box-sizing: border-box;
body 
    padding-top: 100px;
    background: hsl(120, 40%, 40%);
    font-family: Sniglet;

main 
width: 500px; margin: 0 auto; padding-bottom: 10px;
background: white; border-radius: 3px; overflow: hidden;

h1 
font-size: 24px; font-weight: normal;
background: hsl(120, 40%, 95%); color: hsl(120, 40%, 40%);
text-align: center; 
padding: 20px 0; margin-bottom: 40px;

.flp padding: 0 50px;
/*Let's place the label over the input*/
.flp div position: relative; margin-bottom: 30px;

.flp input, .flp label 
width: 400px; display: block;
font: inherit; font-size: 16px; line-height: 24px;
/*fixed height for FF line height issue. 
height = 24(lineheight) + 10*2(padding) + 2(border)*/
height: 46px;
border: 1px solid #999;

.flp input padding: 10px; outline: none; border-radius: 3px;
.flp label 
position: absolute; left: 0; top: 0;
/*left/right padding will be 2px less, adjusted by padding on .ch*/
padding: 10px 8px;
border-color: transparent; color: #666;
cursor: text;


/*label styles*/
.ch 
display: block; float: left;
position: relative; /*for upward animation*/
background: white; 

.ch:first-child padding-left: 2px;
.ch:last-child padding-right: 2px;

/*active input label*/
.focussed 
/*when any input is already focussed clicking on it(label) again won't do                         anything*/
pointer-events: none;

</style>
</head>
<body>
<!-- multistep form -->
<form id="msform">
<!-- progressbar -->
<ul id="progressbar">
    <li class="active">Account Setup</li>
    <li>Personal Details</li>
</ul>
<!-- fieldsets -->
<fieldset>
    <h2 class="fs-title">Create your account</h2>
    <h3 class="fs-subtitle">This is step 1</h3>
    <input type="text" name="email" placeholder="Email" />
    <input type="password" name="pass" placeholder="Password" />
    <input type="password" name="cpass" placeholder="Confirm Password" />
    <input type="button" name="next" class="next action-button" value="Next"         />
</fieldset>
<fieldset>
    <h2 class="fs-title">Personal Details</h2>
    <h3 class="fs-subtitle">We will never sell it</h3>
    <input type="text" name="fname" placeholder="First Name" />
    <input type="text" name="lname" placeholder="Last Name" />
    <input type="text" name="phone" placeholder="Phone" />
    <textarea name="address" placeholder="Address"></textarea>
    <input type="button" name="previous" class="previous action-button"     value="Previous" />
    <input type="submit" name="submit" class="submit action-button"     value="Submit" />
</fieldset>
</form>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-1.9.1.min.js"     type="text/javascript"></script>
<!-- jQuery easing plugin -->
<script src="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js"     type="text/javascript"></script>
</body>
</html>

【问题讨论】:

好吧,我假设您没有粘贴所有内容,因为顶部没有打开的 html 标记,而且您的 javascript 无效,并且没有打开的脚本标记。但是,您的问题可能是您的 JS 位于文档的顶部,并且没有包含在准备好的文档中。 learn.jquery.com/using-jquery-core/document-ready 部分代码错误地出现在我已编辑的部分问题中 【参考方案1】:

您需要将 Javascript 包装在一个准备好的文档中。

    <script type="text/javascript">
    $(function()
    //jQuery timevar current_fs, next_fs, previous_fs; //fieldsets
   var left, opacity, scale; //fieldset properties which we will animate
var animating; //flag to prevent quick multi-click glitches
 $(".next").click(function()
if(animating) return false;
animating = true;

current_fs = $(this).parent();
next_fs = $(this).parent().next();

//activate next step on progressbar using the index of next_fs
$("#progressbar li").eq($("fieldset").index(next_fs)).addClass("active");

//show the next fieldset
next_fs.show(); 
//hide the current fieldset with style
current_fs.animate(opacity: 0, 
    step: function(now, mx) 
        //as the opacity of current_fs reduces to 0 - stored in "now"
        //1. scale current_fs down to 80%
        scale = 1 - (1 - now) * 0.2;
        //2. bring next_fs from the right(50%)
        left = (now * 50)+"%";
        //3. increase opacity of next_fs to 1 as it moves in
        opacity = 1 - now;
        current_fs.css('transform': 'scale('+scale+')');
        next_fs.css('left': left, 'opacity': opacity);
    , 
    duration: 800, 
    complete: function()
        current_fs.hide();
        animating = false;
    , 
    //this comes from the custom easing plugin
    easing: 'easeInOutBack'
    );
 );
    $(".previous").click(function()
    if(animating) return false;
    animating = true;
    current_fs = $(this).parent();
    previous_fs = $(this).parent().prev();
    //de-activate current step on progressbar
    $("#progressbar                                                   li").eq($("fieldset").index(current_fs)).removeClass("active");
    //show the previous fieldset
    previous_fs.show(); 
    //hide the current fieldset with style
    current_fs.animate(opacity: 0, 
        step: function(now, mx) 
            //as the opacity of current_fs reduces to 0 - stored in "now"
            //1. scale previous_fs from 80% to 100%
            scale = 0.8 + (1 - now) * 0.2;
            //2. take current_fs to the right(50%) - from 0%
            left = ((1-now) * 50)+"%";
            //3. increase opacity of previous_fs to 1 as it moves in
            opacity = 1 - now;
            current_fs.css('left': left);
            previous_fs.css('transform': 'scale('+scale+')', 'opacity':                                            opacity);
        , `enter code here`
        duration: 800, 
        complete: function()
            current_fs.hide();
            animating = false;
        , 
        //this comes from the custom easing plugin
        easing: 'easeInOutBack'
    );
);
$(".submit").click(function()
    return false;
);
);
</script>

【讨论】:

您还尝试在加载之前使用 jQuery。在 之后你才能拥有 $

以上是关于多词干jquery表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 时提交表单不起作用

Jquery表单验证不起作用

插入日期选择器后 Jquery 表单验证不起作用

多步表单“下一步”按钮不起作用

我在表单上使用 jquery .validate() 后 jQuery .submit() 不起作用

jquery验证动态表单输入的插件不起作用