Wednesday, April 6, 2011
Changing HTML Form Element Type with Javascript
With following example, once the select box has been changed to a text box, you can assign any value you like to it(of course,alternative way is to create new Option with your desired value, and set the selectedIndex ).
Here's javascript function:
<form method='post'>
<select name='myselect'>
<option value='1'>Option1</option>
<option value='2'>Option2</option>
</select>
<input type='button' onclick='changeInputType(this.form.myselect, "text");'>
</form>
<script>
function changeInputType(oldObject, oType) {
var newObject = document.createElement('input');
newObject.type = oType;
if(oldObject.size) newObject.size = oldObject.size;
if(oldObject.value) newObject.value = oldObject.value;
if(oldObject.name) newObject.name = oldObject.name;
if(oldObject.id) newObject.id = oldObject.id;
if(oldObject.className) newObject.className = oldObject.className;
oldObject.parentNode.replaceChild(newObject,oldObject);
return newObject;
}
</script>
The javascript was copied from this website
Monday, March 21, 2011
JQuery Dialog Remove Form Elements
JQuery Dialog seems removed the form element out from the original dom structure, thus causing the problem. The solution will be
1) Add an additional DIV or SPAN before your closing FORM tag(give it an ID),
2) Before the form submit, append the Dialog DIV back to the above created DIV or SPAN
Here's the sample code:
<!DOCTYPE html>
<html lang="en">
<?php
if($_POST['username']) echo "<br/> Username is " . $_POST['username'];
if($_POST['outerfield']) echo "<br/> Username is " . $_POST['outerfield'];
?>
<head>
<meta charset="utf-8">
<title>jQuery demo</title>
</head>
<body>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css" type="text/css" media="screen">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js"></script>
<script>
//google.load("jquery", "1.5.1");
//google.load("jqueryui", "1.8.11");
</script>
<form id="form1" method='post'>
<input type="button" class="button" value="go dialog" onclick="GoDialog()" />
<input type='button' class='button' value='Check Value1' onclick='checkvalue("outerfield");'>
<input type='button' class='button' value='Check Value2' onclick='checkvalue("username");'>
<input type='button' class='button' value='Put It Back' onclick='putitback("username");'>
<br/> OuterField <input type='text' name='outerfield' size='20'>
<div class="dlg" id="msgDlg" style='display:none;'>
<br/>Name: <input type="text" name='username' />
<br/><input type="button" class="button" value="OK" onclick="$('#msgDlg').dialog('close');" />
</div>
<script>
$(function () {
$('#msgDlg').dialog({
autoOpen: false,
modal: false,
width: 450,
height: 300,
draggable: true,
resizable: true
});
});
function GoDialog() {
var msgDlg = $('#msgDlg').dialog('open');
}
</script>
<br/><input type='submit' value='Submit'>
</form>
</body>
</html>
<script>
function checkvalue(fieldname){
if(document.forms[0][fieldname]==undefined){
alert(fieldname+' Undefined detected');
}else{
alert(fieldname+' - Okay');
}
}
</script><
Friday, September 3, 2010
分享: 般若波罗蜜多心经
缘起,小时候大概是初中一二左右,每星期都有两三天会梦见自己半梦半醒之中和灵体有所接触,甚至到来抚摸我的额头,恐怖到极点。
在机缘巧合之下,和般若波罗蜜多心经结下了缘,除了背上了心经,还在房间里贴上了心经。说也奇怪,自从房间里贴上了心经后,那些灵体有关的梦就结束了。
最记得一次的怪遇是有一次我在谁梦中被灵体骚扰,弯起了我的手往自己的喉咙捉去,结果在最紧张的时刻,我心里只念了一句“观自在菩萨”, 整个世界突然什么也没了,我的手也松了下来,心经实在是太不可思议了。如果你有缘看到这篇文章,希望你也赶快的背诵心经,好好的感受心经的胜殊。记得哦,背诵心经会开智慧的哦!
般若波罗蜜多心经
唐三藏法师玄奘译
观自在菩萨 行深般若波罗蜜多时 |
Tuesday, June 15, 2010
青木瓜泡茶 痛風不見了 治療尿酸效果更佳
Monday, June 14, 2010
[Backup for peronal reference]
Process Forking with PHP
Posted March 4th, 2004 in PHP
Unix supports the process of forking which allows a parent process to spawn a subprocess and continue running both processes concurrently. It is possible to do this in PHP using the PHP Process Control Functions. Note that you should never attempt to use these process control forking functions when using a webserver; you shuld only fork applications when using the PHP command line client.
Before you can use the PHP process control functions you must compile the PCNTL extensions into PHP using the --enable-pcntl configure option (ie ./configure --enable-pcntl along with all the other configuration options you would like to compile into the PHP binary). No additional libraries need to be pre-installed. Note that these process control extensions will not work on non-Unix platforms (ie Microsoft Windows).
Basic Forking Example
A very basic and commonly used example for forking a process in PHP is as follows:
$pid = pcntl_fork();
if($pid) {
// parent process runs what is here
print "parent\n";
}
else {
// child process runs what is here
print "child\n";
}
Running this will output the following:
child
parent
Child process is a copy of the parent process
What actually happens when you call the pcntl_fork() function is that a child process is spawned which is exactly the same as the parent process and continues processing from the line below the function call. All variables and objects etc are copied into the child process as-is but these are new copies which belong to the new process. Modifying them in the child process does not affect the values in the parent (or any other forked) process.
The parent process will have a value assigned to $pid whereas the child process will not, hence the if test. Note that in the above example, both processes would continue running whatever code is after the if statement, something which is rarely mentioned in examples of PHP process forking on the web.
To illustrate this, we'll modify the example above slightly to add additional output as follows:
$pid = pcntl_fork();
print "start\n";
if($pid) {
// parent process runs what is here
print "parent\n";
}
else {
// child process runs what is here
print "child\n";
}
print "end\n";
Running this will display the following:
start
child
end
start
parent
end
Making the parent process wait until the child has finished
So ideally you want to let either the child or parent continue processing the rest of the script and make the other process exit after the process is forked. If you exit from the parent process, however, you'll end up with "zombie" processes running which do not belong to any process. Therefore the parent process needs to wait until all the child processes have finished running before exiting itself. You can do this using the pcntl_waitpid() function, which will cause the parent process to wait until the child process has completed. You can then either just let the parent process exit, or do any tidy up code that is required.
An example of doing this is as follows:
$pid = pcntl_fork();
if($pid) {
// this is the parent process
// wait until the child has finished processing then end the script
pcntl_waitpid($pid, $status, WUNTRACED);
exit;
}
// the child process runs its stuff here and then ends
...
The exit call in the parent process ensures that processing stops at that point and the parent does not execute any of the code intended for the child. Another way of doing the same thing without the exit code would be as follows:
$pid = pcntl_fork();
if($pid) {
// this is the parent process
// wait until the child has finished processing then end the script
pcntl_waitpid($pid, $status, WUNTRACED);
}
else {
// the child process runs its stuff here
}
Exit codes from the child process
You could optionally have an exit call at the end of the child part of the if statement.
The $status parameter passed to pcntl_waitpid() stores the return value from the child process. If the child process returns 0 (ie success) then it will also be zero. On my Linux desktop the value returned as $status would be the value returned from the exit call multipled by 256. So if the child process ended with exit(2) my system returned 512 as the $status value. Whether this is the same across all Unix systems I do not know.
Getting the parent process to wait until the child process has completed is useful for then doing something else based on the return value of the child process as shown in the following example:
$pid = pcntl_fork();
if($pid) {
// this is the parent process
// wait until the child has finished processing then end the script
pcntl_waitpid($pid, $status, WUNTRACED);
if($status > 0) {
// an error occurred so do some processing to deal with it
}
}
else {
// the child process runs its stuff here
...
if(...successful condition...) {
exit(0); // this indicates success
}
else {
exit(1); // this indicates failure
}
}
Forking multiple child processes
This final example illustrates how you could fork several children from the parent process with PHP. The loop runs three times and forks a child process for each loop, storing the child pids into an array. After running the stuff for the child process the child then exits. A second loop runs in the parent after the first to ensure all child processes have finished running before resuming its own process.
Note it is very important in this sort of process that the child explicitly exits in its section of the script, otherwise each child will continue running through the first, and then second, loop.
$pids = array();
for($i = 0; $i < 3; $i++) {
$pids[$i] = pcntl_fork();
if(!$pids[$i]) {
// child process
...
exit();
}
}
for($i = 0; $i < 3; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
}
// complete parent processing now all children have finished
...
The PHP manual pages for process control functions can be found at www.php.net/manual/en/ref.pcntl.php. There are a number of user contributed notes for each of the functions which should also help with your understanding of process forking in PHP.
Sunday, April 4, 2010
MY FM 重金礼聘 在线 自动计算系统
如果参与者能成功的回答到最后一提常识题,那他/她就能赢取大奖,少则数百令吉,多则上万的奖金。有于该游戏的赞助商为MAGNUM, 所以数学题的答案有点像是4D 那样。参与者每成功回答一题数学题,他/她就能赢取RM50.00, 那只要能把三题数学题给答好,RM150.00 就拿定了。
DJ首先会向参与者发出 10 个 数字,然后参与者必须利用这 10 个数字完成以下数学题:
假设该10个数字为 1,2,3,4,5,6,7,8,9,9
题 1) DJ会给参与者一个数字,然后参与者必须从10个数字里选出4个数字,如果这4个数字的总和与DJ的数字一样,那就算答对了。(假设DJ要的是12, 那参与者必须回答 1236 或 1245, 1+2+3+6=12, 1+2+4+5=12)
题 2) DJ会给参与者一个数字,然后参与者必须从10个数字里选出4个数字,如果这4个数字相减与DJ的数字一样,那就算答对了。(假设DJ要的是3, 那参与者必须回答 9123 或 9213, 9-1-2-3=3, 9-2-1-3=3)
题 3) DJ会给参与者一个数字,然后参与者必须从10个数字里选出4个数字,如果这4个数字的数学计算(加减加)与DJ的数字一样,那就算答对了。(假设DJ要的是25, 那参与者必须回答 8919 或 9819, 8+9-1+9=25, 9+8-1+9=25)
对于一般的市民,通常要在30秒内答对3题数学题是有一定的难度,有的参与者找了好几位助手都折腰哩!
讲了一大堆的废话,就是想告诉你,昨晚半夜孩子发梦,一脚踢到我头上,无辜的我,摸着无辜的头,睡意全失, 在早上两点钟,为 my fm 200万广大的听众写下来 “MY FM 重金礼聘 在线 自动计算系统”, 网址为 http://kimwah.net/myfm/
有了“MY FM 重金礼聘 在线 自动计算系统”,那RM150.00的奖金肯定是随手可得。
如果你有严重的“斗鸡眼”和“发瘟手”,连那几个数字也可能错误输入的话,千万别使用这系统,免得我给你咒到半夜又给孩子发梦踢醒。
如果你是有良心的话,在赢取MY FM + MAGNUM 的奖金时,记得捐助一点点给 WorldVision, 慈济,Makna 或 Unicef。