2015-04-23 53 views
0

我正在通过Odin项目工作,尝试使用jQuery制作“蚀刻草图”类型的网站。这个想法是在其内部有一个网格,当被挖空时,网格正方形会改变颜色。用户还应该能够输入他们想要的网格正方形,所以如果他们在表格中放置了16个,他们将得到一个16x16的网格。输入值不随用户输入而改变

我将一个初始值设置为16.当我输入一个不同的数字并点击“去”时,该值只是变回到16,网格保持不变。我哪里错了?

谢谢!

相关代码如下:

HTML:

<form> 
    <label>Enter the width in pixels:</label> 
    <input id="formbox" type="text" value="16"> 
    <input id="setWidth" class="buttons" type="submit" value="Go!"> 
    <button id="reset" class="buttons" type="reset">Reset</button> 
</form> 

JS:

$('#setWidth').click(function() { 
    $('.box').css("background-color", "#fff"); 
    $('.box').remove(); 

    var $divWidth = $('#formbox').val(); 

    for (var i = 0; i < $divWidth; i++) { 
     $('#canvas').append('<div class="divHolder"></div>'); 
     $('.divHolder').css("height", Math.floor(500/$divWidth)); 
    } 

    for(var i = 0; i < $divWidth; i++) { 
     $('.divHolder').append('<div class="box"></div>'); 
     $('.box').css("width", Math.floor(500/$divWidth)); 
     $('.box').css("height", Math.floor(500/$divWidth)); 
    } 
}); 
+2

那么,你提交表单,重新加载页面,你使用'submit'按钮时期望的是什么? – adeneo

回答

2

您应该能够使用preventDefault()功能上的事件。

此函数停止默认行为(在这种情况下,刷新页面是默认情况下应该预期的行为)。

$('#setWidth').click(function (e) { 
    e.preventDefault(); 
    $('.box').css("background-color", "#fff"); 
    $('.box').remove(); 

    var $divWidth = $('#formbox').val(); 

    for (var i = 0; i < $divWidth; i++) { 
     $('#canvas').append('<div class="divHolder"></div>'); 
     $('.divHolder').css("height", Math.floor(500/$divWidth)); 
    } 

    for(var i = 0; i < $divWidth; i++) { 
     $('.divHolder').append('<div class="box"></div>'); 
     $('.box').css("width", Math.floor(500/$divWidth)); 
     $('.box').css("height", Math.floor(500/$divWidth)); 
    } 
}); 
+0

除此之外,用户可能会将'type =“submit”'更改为'type =“button”'。 –

+0

@SpencerWieczorek不,完全没有。再看一下这段代码(我已经添加了一个例子)。你可以自己尝试,不需要改变类型。 – SysVoid

+0

@SysVoid我认为你错过了我的消息,我只是说它更合适,因为按钮显然不是用于提交。 –